1.何为冒泡排序?
就是将未排列的数组从下标为0开始向后,依次将相邻两个元素进行比较,若相邻的某两项不符合顺序,就将这两项顺序调换,最终形成有规律的数组。
2.冒泡排序思路
以下步骤均以乱序数组 arr 为例从小到大排列:
int[] arr = {5, 8, -7, 4, 6, -9, 3, -1, 2,-65};
首先,我们回到定义中:
要将未排列的数组从下标为0开始向后,依次将相邻两个元素进行比较
所以我们要先写一个能将数组从下标为0开始向后依次取内容的代码(将一个取内容的代码进行重复):
for (int i = 0; i < array.length; i++) {
}
注:(重复次数也可以为length-1,因为最后一个数和倒数第二个数只需要比较一次即可)
接着,再看定义:
若相邻的某两项不符合顺序,则调换顺序
因此我们需要将所取内容两两比较,并循环进行这个动作:
for (int j = 0; j < array.length - 1; j++) {
if (array[j] > array[j + 1]) {
int b = array[j];
array[j] = array[j + 1];
array[j + 1] = b;
}
}
注:(重复次数为length-1,因为最后一个数找不到后一数和它比较)
这里的调换顺序也可以用最大值的语句来表示:
int m = Math.min(array[i], array[i + 1]);
if (array[i] > array[i + 1]) {
array[i] = array[i + 1];
array[i + 1] = m;
}
3.输出(遍历一维数组)语句:
for (int p = 0; p < array.length; p++) {
System.out.print(array[p] + " ");
}
冒泡排序方法全部代码:
public void Bubble_sort_1(int[] array) {
System.out.println();
System.out.print("冒泡排序: ");
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length - 1; j++) {
if (array[j] > array[j + 1]) {
int b = array[j];
array[j] = array[j + 1];
array[j + 1] = b;
}
}
}
for (int p = 0; p < array.length; p++) {
System.out.print(array[p] + " ");
}
}