排序 查詢演算法

2021-07-03 19:23:54 字數 1402 閱讀 1889

主要排序法有:

一、冒泡(bubble)排序——相鄰交換

二、選擇排序——每次最小/大排在相應的位置

三、插入排序——將下乙個插入已排好的序列中

四、殼(shell)排序——縮小增量

五、歸併排序

六、快速排序

七、堆排序

八、拓撲排序

九、錦標賽排序

十、基數排序

綜合比較,大致有如下結果:

時間效率比較:

結論:

1.從平均時間效能上,快排最佳,所需時間最省,但快排在最壞情況下的時間效能不如堆排序和歸併排序。而後兩者相比較的結果是,在n較大時,歸併排序所需時間較堆排序省,但它所需的輔助儲存量最多。

2.上表中的「簡單排序」包括除希爾排序之外的所有插入排序,起泡排序,和簡單選擇排序,其中以直接插入排序為最簡單,當序列中的記錄基本有序或n值較小時,它是最佳的排序方法,因此常將它和其他的排序方法,諸如快排,歸併等結合使用。

3.基數排序的時間複雜度也可以寫成o(d*n),因此它最適用於n值很大而關鍵字較小的序列。若關鍵字也很大,而序列中大多數記錄的最高位關鍵字均不同,則亦可先按最高位關鍵字不同將序列分成若干小的子串行,而後進行直接插入排序。

4.從方法的穩定性來比較,基數排序是穩定的內排方法,所有時間複雜度為o(n^2)的簡單排序法也是穩定的,然而快速排序、堆排序、和希爾排序等時間效能較好的排序方法都是不穩定的。(一般來說,排序過程中的比較是在相鄰的兩個記錄關鍵字間進行的排序方法 是穩定的。穩定是由方法本身決定的,對不穩定的排序方法而言,不管其描述形式如何,總能舉出乙個說明不穩定的例項來。反之,對穩定的排序方法,總能找到一種不引起不穩定的描述形式)

綜上,上述的排序方法中,沒有哪一種是絕對最優的。有的適用於n較大的情況,有的適用於n較小的情況,因此,在使用時需根據不同情況適當選用,甚至可以將多種方法結合起來使用。

常見的查詢演算法有:

1)順序查詢

2)二分查詢

3)索引查詢

4)二叉排序樹

5)雜湊查詢

對查詢表經常進行的操作有:

1)查詢某個特定的資料元素是否在查詢表中;

2)檢索某個特定的資料元素的各種屬性;

3) 在查詢表中插入乙個資料元素;

4)從查詢表中刪去某個資料元素。

若對查詢表只做前兩種統稱為查詢的操作,則此類查詢表為靜態查詢表。若在查詢過程中同時插入查詢表中不存在的資料元素,或者從查詢表中刪除已存在的某個資料元素,則稱此類表為動態查詢表。

排序演算法 查詢演算法

排序演算法 交換排序 選擇排序 歸併排序 基數排序 查詢演算法 動態查詢 雜湊表查詢 簡介 n個資料,從1到n乙個乙個插入進行排序。空間複雜度 o 1 時間複雜度 o n2 演算法穩定性 穩定演算法 簡介 取幾個增量,如5,2,1 最後乙個增量必須為1 然後從左到右5個5個的排序 如 1到5資料排序...

排序演算法和查詢演算法

法是用來解決常見問題的方法 同乙個問題可以採用多種方法解決,不同 方法適用於不同的環境 排序指的是把一組數字按照某種順序排列好 排序演算法分很多次重複執行,每次負責把 乙個數字放在合適的位置上 為了實現以上效果可以先確定數字然後查詢 位置也可以先確定位置然後查詢數字 通過不斷調整兩個數字的相互順序最...

查詢排序演算法彙總

排序經常作為其他演算法的輔助演算法出現在各種場合,下面對排序來做乙個彙總 1 氣泡排序 思想 相鄰的兩個數比較,較小 大 的那個數向上移動 冒泡 而後最小 大 的數漂到最頂端 實現 樸素版 void bubblesort int a,int size if bubble break 氣泡排序的演算法...