/**
* 冒泡排序
* @author xzb
* @date 2022/9/9 0:13
*/
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++) {
//每次排序会将最大的数放到正确的位置上,所以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次即可
内层循环则是把当前数值和后一位数值作比较,当前数值比后一位数值大(倒序),则进行交换位置
这样一来,内层循环走一遍,则是把当前比较的数组的最大值放到最后位置
外层循环走完则是排序完所有数字