冒泡排序
工作原理:
第一次排序:从数组中依次取出相邻两个元素,进行比较,小的元素被被放在大的元素前面,然后小的元素不在参排序。
第二次排序:再从刚比较过的大的元素开始,依次向后取出相邻的两个元素进行比较,,小的元素被被放在大的元素前面,
然后小的元素不在参排序。
.....
一次类推,直到排序完成。
动图链接:https://www.runoob.com/w3cnote/bubble-sort.html
代码演示:
public static void main(String[] args) {
int[] arr = {0,21,4,5,76,93,2,11,98,45};
bubbleSort(arr);
// selectSort(arr);
}
/**
* 冒泡排序算法的原理如下:
* 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
* 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
* 针对所有的元素重复以上的步骤,除了最后一个。
* 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
* @param array
*/
public static void bubbleSort(int[] array){ //arr是数组参数
//外层排序 两两相比较 所以比较次数:array.length-1
for (int i = 0; i < array.length-1; i++) {
//内层
int temp ; //用来存放元素
for (int j = 0; j < array.length-1 -i; j++) {// i是已经比较过的 不在参与
if (array[j] < array[j+1]){ //大的在前小的在后
//调换位置
temp = array[j+1];
array[j+1] = array[j];
array[j] = temp;
}
}
System.out.println(Arrays.toString(array));
}
// System.out.println(Arrays.toString(array));
System.out.println("================================");
//外层排序
for (int i = 0; i < array.length-1; i++) {
//内层
int temp ;
for (int j = 0; j < array.length-1 -i; j++) {
if (array[j] > array[j+1]){
//调换位置
temp = array[j+1];
array[j+1] = array[j];
array[j] = temp;
}
}
System.out.println(Arrays.toString(array));
}
// System.out.println(Arrays.toString(array));
}
运行结果: