首先要说一点:冒泡排序的效率非常低,当然其优势是内存占用少.
伪代码:
for i between 0 and (array length -2 ) :
if (array (i+1)) < (array(i) ) :
交换 (array (i+1)) 和 (array (i)) 的位置一直重复迭代即可实现排序
java代码实现:
import java.util.Arrays;
public class MyselfSort {
public static void main(String[] args) {
boolean flag ;
int [] nums = {5,3,6,3,7,2,44,0};
do {
flag = false;
for (int i = 0 ; i < nums.length-1 ; i ++ ) {
if (nums[i+1]>nums[i]){
int tmp = nums [i+1];
nums[i+1]=nums[i];
nums[i]=tmp;
flag=true;
}
}
}while (flag);
Arrays.stream(nums).forEach(System.out::println);
}
}
冒泡排序: 两个杯子交换杯子里的水,需要一个交换的杯子
如上: flag标识来界定是否循环遍历了整个集合
从第一个元素开始和第二个元素比较,和第三个比较,一直到最后一个比较
发现第二个比第一个大,发生交换,并继续循环
import java.util.Arrays;
public class MyselfSort {
public static void main(String[] args) {
int[] arr = {5, 3, 6, 7, 2, 44, 0};
for (int i = 0; i < arr.length - 1; i++) {//外层循环控制排序趟数
for (int j = 0; j < arr.length - 1 - i; j++) {//内层循环控制每一趟排序多少次
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
Arrays.stream(arr).forEach(System.out::println);
}
}
网友评论