看了很多网上关于冒泡排序的分析,大多文章是对冒泡排序的文字解释,然后直接贴上代码,感觉理解的不是很彻底,下面将从代码的角度分析冒泡排序
废话不多说,直接上代码:
public static void bubble_sort(int[]arr) {
//初始值 int[]arr={2,6,5,4,3};
//1 将数组中最大数字移动到最后
int temp;
for (int j = 0; j < arr.length - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
//循环第一次得到结果为:{2,5,4,3,6}
//2 再循环{2,5,4,3} 找出最大的放到最后
for (int j = 0; j < arr.length - 1 - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
//循环第二次得到结果为:{2,4,3,5,6}
//3 再循环{2,4,3},找出最大的
for (int j = 0; j < arr.length - 1 - 1-1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
//循环第三次得到结果为:{2,3,4,5,6}
//4 再循环{2,3} 此时 2比3小,不做交换,一共循环4次,即arr.length - 1
//5 以此类推,将每一次循环当做冒泡,于是得到下面双循环冒泡排序
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 + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
for (int num : arr) {
System.out.println(num);
}
}

本文通过代码详细解析冒泡排序的过程,从最初的数组到最后排序完成,逐步展示每个循环如何将最大元素冒泡到末尾,最终实现整个数组的排序。通过三次循环的例子,清晰地阐述了冒泡排序的逻辑,并提供了完整的Java实现代码。
996

被折叠的 条评论
为什么被折叠?



