三種時間複雜度為O(n 2)的排序演算法

2021-09-25 23:04:58 字數 482 閱讀 2726

1.氣泡排序

基本思想:依次比較相鄰元素,若前面的大於後面的就交換元素,在一次迭代中將最大的元素「沉降」到最後的位置,經過n-1次迭代即可完成排序目的。

public static void bubblesort(int data) 

}if(bfinished)

}}

上述**是優化後的氣泡排序,我們知道在一次迭代中,若一次交換都沒發生,就可以證明排序已經完成,不需要再進行後面的迭代了。

2.選擇排序

基本思想:將序列劃分為有序部分和無序部分(有序部分在前),有序部分初始長度=0.依次從無序部分找到最小值放到有序部分的最後一位,有序部分長度++,無序部分長度--。最終使得有序部分長度=n,無序長度=0。

public static void selectsort(int data) 

data[j]=temp;

}}

排序演算法之時間複雜度為O N 2 的演算法

背景知識 排序演算法算是比較基礎的演算法了,但是在面試過程中偶爾也會被問到,雖然很多語言都內建了排序函式,例如php的sort函式等等,但是還是有必要聊聊排序演算法,這篇文章中將介紹時間複雜度為o n 2 的幾個排序演算法。本文基於從小到大排序講解。1.氣泡排序 前乙個和後乙個比較,如果前乙個比後乙...

排序 時間複雜度為O n 的三種排序演算法

這三種排序演算法分別是桶排序 計數排序和基數排序,之所以它們的時間複雜度能到達o n 是因為它們都是非基於比較的排序演算法,不涉及元素之間的比較操作。1 桶排序 1.1 原理 將待排資料元素分配到幾個有序的桶中,然後對每個桶中的資料元素分別進行排序,每個桶中的資料元素有序後按桶的順序將資料元素依次取...

基於比較氣泡排序 時間複雜度O n 2

只操作相鄰的兩個資料,每次冒泡操作都會對相鄰的兩個元素進行比較,看是否滿足大小關係要求,如果不滿足讓它兩互換。一次冒泡會讓至少乙個元素移動到它應該在的位置,重複 n 次,就完成了 n 個資料的排序工作。eg 對於一組資料 4 5 6 3 2 1第一次冒泡的過程 經過了 5 次比較,此時 3 已經在正...