冒泡排序(升序):
1,两个相邻的元素进行比较,大的数放在右边;数组中的元素两两比较完之后,数组中的最大的数的位置就是数组中的最后一个元素
2,每一轮比较都会找到当前数组中的最大值;下一轮需要比较的元素就不用包含已经找出来的元素;针对数组长度为n的数组,需要找n-1轮;
高亮标记的元素是下一轮实际上比较的元素,未高亮的元素已经是升序的
代码:
/**
* 内层的排序(升序)
*/
public void forInner() {
int arr[] = {9,3,4,5,2,1};
//通过两两比较找到数组中的最大值,放到最后
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) { //左边的元素大于右边的元素
//交换元素的位置
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
System.out.println(Arrays.toString(arr));
}
}
/**
* 冒泡排序(升序)
*/
public void maoPao() {
int arr[] = {9,3,4,5,2,1};
//通过两两比较找到数组中的最大值,放到最后
for (int j = 0; j < arr.length - 1; j++) { //控制找的轮数
//每一轮的冒泡比较
for (int i = 0; i < arr.length - 1 - j; i++) { //0,5 6
if (arr[i] > arr[i + 1]) { //左边的元素大于右边的元素
//交换元素的位置
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
本文深入讲解了冒泡排序算法的实现原理,通过示例代码详细解释了如何通过两两比较将数组中的元素按升序排列。文章展示了内层排序过程,并介绍了完整的冒泡排序过程,包括如何确定比较轮数和每次比较的范围。

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



