感谢尚硅谷韩顺平老师深入细致的讲解
冒泡排序(BUbble Sorting)的基本思想是:比如从小到大排序,通过对待排序序列从前向后,一次比较相邻元素的值,若发现后者比前者小则交换,使值较大的从前往后移动,就像水底的气泡一样逐渐往上冒泡。
思路:
原始数组:3, 9, -1, 10, 20
第一趟排序
(1) 3, 9, -1, 10, 20 【3,9】
(2) 3, -1, 9, 10, 20 【9,-1】 // 如果相邻的元素逆序就交换
(3) 3, -1, 9, 10, 20 【9,10】
(4) 3, -1, 9, 10, 20 【10,20】
第一趟排序后最大的就到最后了
第二趟排序
(1) -1, 3, 9, 10, 20【3,-1】 //交换
(2) -1, 3, 9, 10, 20【3,9】
(3) -1, 3, 9, 10, 20 【9,10】
第二趟后倒数第二大的就在倒数第二个位置了
第三趟排序
(1) -1, 3, 9, 10, 20
(2) -1, 3, 9, 10, 20
第四趟排序
(1) -1, 3, 9, 10, 20
由上可见,如果在一次循环中没有发生交换,那么可以认为数组已经是有序的了,就可以提前结束后面的循环。
public static void bubbleSort(int[] arr) {
// 冒泡排序 的时间复杂度 O(n^2), 自己写出
int temp = 0; // 临时变量
boolean flag