数组排序
一、冒泡排序
排序规则:
两个数之间进行比较,如果前一个数比后一个数大,将两个数的位置交换
每一次排序就选出一个最大值,这一轮排出的最大值不参与下一轮比较
例子:
-
原始数据 33 42 75 58 60 20
-
第一轮: 33 42 58 66 20 75
-
第二轮: 33 42 58 20 60 75
-
第三轮: 33 42 20 58 60 75
-
第四轮: 33 20 42 58 60 75
-
第五轮: 20 33 42 58 60 75
- 规律:
- 1、比较的轮数 = 数据的个数 - 1
- 2、每轮比较的次数在逐渐递减
- 3、第一轮的比较次数 = 总个数 - 1
二、代码
代码如下(示例):
int[] arr = new int[] { 33, 42, 75, 58, 60, 20 };
int m = 0;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j + 1] < arr[j]) {
m = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = m;
}
}
}
System.out.println(Arrays.toString(arr));
输出(示例):
[20, 33, 42, 58, 60, 75]
总结
冒泡排序把小的元素往前冒泡或者把大的元素往后冒泡。比较两个相邻的元素,如果两个元素相等,不会交换;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。
链接: link.