冒泡排序算法
1、简介
冒泡,想象一下,深水中的鱼,在水底吐了个泡泡,这个泡泡在上升的过程中,随着水压的减小,泡泡变得越来越大,最后,砰地一声,破灭了。冒泡排序算法也是如此,从索引0位置开始,遍历数组,找到最大的那个数,将其放到数组的最右端。
2、算法流程与程序流程图
算法流程与程序流程图如下:
算法具体的实现流程,图中已经很详细的说明了,就不再啰嗦了。
3、代码实现
具体的代码如下:
package sort;
public class BubbleSort {
public static void bubbleSort(int[] arr) {
// 外层循环,控制冒泡的范围
int size = arr.length;
for (int i = 0; i < size; size--) {
// 内层循环,冒泡,将最大值放到最右端
for (int j = 0; j < size - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr, j, j + 1);
}
}
}
}
private static void swap(int[] arr, int j, int i) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void main(String[] args) {
int[] arr = {5, 2, 8, 12, 4, 6};
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println();
bubbleSort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
}
}
4、总结
冒泡排序的时间复杂度为O(n平方),空间复杂度为O(1),同样是一个很简单的排序算法。