排序演算法之四 改進的氣泡排序

2021-07-23 10:48:02 字數 463 閱讀 4463

以下純屬個人原創,歡迎各路大神指點迷津

首先是沒有經過優化的氣泡排序演算法

public static void bubblesort(int a )

}} }

這種排序的時間複雜度很顯然是n2

以下是我乙個想法,當然測試也是成功的進行了排序。思路主要是每次遍歷時不僅將最小的進行冒泡,同時通過記錄最大的元素的位置和值進行沉底。

public static void bubblesort_3(int a)  else if (a[j] > max) 

}if (max_pos != i) else

arraytools.print(a);

} }

雖然這個方法也是兩層排序,但是外層只遍歷n/2內層遍歷n-i次。所以總的時間複雜度是n+(n-1)+(n-2)+...+n/2,遠小於n2

排序演算法 氣泡排序(改進)

假如我們運氣好,用了1輪就已經將整個序列排序好了,整個數列已然是有序的了。可是我們的排序演算法仍然 兢兢業業 地繼續執行第2輪 第3輪 直至n 1輪,這就很沒必要。也就是說如果序列已經有序,每一輪排序還是會繼續比較相鄰的元素,這就相當於做了一些沒用的操作。這種情況下,如果我們能判斷出數列已經有序,並...

排序演算法之五 氣泡排序及其改進

氣泡排序是非常好理解的一種排序,每一次排序都可以確定乙個元素最終的位置 1.對序列從第乙個元素到最後乙個元素遍歷,如果當前元素小於下乙個元素,則交換位置 2.第 i 次遍歷,從第乙個元素到最後 n i 個元素,如果當前元素小於下乙個元素,則交換位置 3.重複2直至第n 1次遍歷,輸出序列 原序列 9...

改進的氣泡排序演算法

氣泡排序演算法,是最基本的排序演算法,它屬於交換排序。設想被排序的陣列r 1.n 垂直豎立,將每個資料元素看作有重量的氣泡,根據輕氣泡不能在重氣泡之下的原則,從下往上掃瞄陣列r,凡掃瞄到違反本原則的輕氣泡,就使其向上 漂浮 交換位置 如此反覆進行,直至最後任何兩個氣泡都是輕者在上,重者在下為止。若記...