1.什么是冒泡排序
依次 比较 相邻的两个数,正序则不动,倒序则交换位置,如此循环,直到整个数组为有序为止 。
这就是冒泡排序。重点是比较相邻的元素。
举个例子:
第一轮比较
首先比较索引为0和1的值
3>2,为倒序
则进行位置交换
↓↓↓↓↓↓↓
再比较索引为1和2的值
3<7,为正序
位置不变
↓↓↓↓↓↓↓
再比较索引为2和3的值
7>4,为倒序
则进行位置交换
↓↓↓↓↓↓↓
再比较索引为3和4的值
7>1,为倒序
则进行位置交换
↓↓↓↓↓↓↓
此时已经遍历到最后一位(length-1),第一轮位置交换结束。
以此类推,每一轮都要从头开始排序,但最后一位不需要排序,因为已经排过了。
代码如下:
public class Sort {
public static void main(String[] args) {
//示例数据
int arr[] = {3,2,7,4,1};
System.out.println("====Before====");
System.out.println(Arrays.toString(arr));
//进行排序
BubbleSort(arr);
//展示结果
System.out.println("====After====");
System.out.println(Arrays.toString(arr));
}
//冒泡排序
public static void BubbleSort(int arr[]){
int temp;
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]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
}
==代码描述==
从第一个位置开始遍历整个数组,使用嵌套循环
外层表示排序的次数,有n个数则只需要n-1次即可
内层循环则是把当前数值和后一位数值作比较,当前数值比后一位数值大(倒序),则进行交换位置
这样一来,内层循环走一遍,则是把当前比较的数组的最大值放到最后位置
外层循环走完则是排序完所有数字。