常見排序算法整理總結

排序
排序:所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操做。
穩定性:假定在待排序的記錄序列中,存在多個具備相同的關鍵字的記錄,若通過排序,這些記錄的相對次序保持不變,即在原序列中,r[i]=r[j],且r[i]在r[j]以前,而在排序後的序列中,r[i]仍在r[j]以前,則稱這種排序算法是穩定的;不然稱爲不穩定的。
內部排序:數據元素所有放在內存中的排序。
外部排序:數據元素太多不能同時放在內存中,根據排序過程的要求不能在內外存之間移動數據的排序。
一丶插入排序
1)直接插入排序
直接插入排序是一種簡單的插入排序法,其基本思想是:把待排序的記錄按其關鍵碼值的大小逐個插入到一個已經排好序的有序序列中,直到全部的記錄插入完爲止,獲得一個新的有序序列 。
當插入第i(i>=1)個元素時,前面的array[0],array[1],…,array[i-1]已經排好序,此時用array[i]的排序碼與array[i-1],array[i-2],…的排序碼順序進行比較,找到插入位置即將array[i]插入,原來位置上的元素順序後移。
直接插入排序的特性總結:算法

  1. 元素集合越接近有序,直接插入排序算法的時間效率越高
  2. 時間複雜度:O(N^2)
  3. 空間複雜度:O(1),它是一種穩定的排序算法
  4. 穩定性:穩定

2)希爾排序
希爾排序法又稱縮小增量法。希爾排序法的基本思想是:先選定一個整數,把待排序文件中全部記錄分紅個組,全部距離爲的記錄分在同一組內,並對每一組內的記錄進行排序。而後,取,重複上述分組和排序的工做。當到達=1時,全部記錄在統一組內排好序。
希爾排序的特性總結:數組

  1. 希爾排序是對直接插入排序的優化。
  2. 當gap > 1時都是預排序,目的是讓數組更接近於有序。當gap == 1時,數組已經接近有序的了,這樣就會很快。這樣總體而言,能夠達到優化的效果。咱們實現後能夠進行性能測試的對比。
  3. 希爾排序的時間複雜度很差計算,須要進行推導,推導出來平均時間複雜度: O(N^1.3—N^2)
  4. 穩定性:不穩定

二丶選擇排序
1)選擇排序
每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到所有待排序的數據元素排完 。
在元素集合array[i]--array[n-1]中選擇關鍵碼最大(小)的數據元素,若它不是這組元素中的最後一個(第一個)元素,則將它與這組元素中的最後一個(第一個)元素交換,在剩餘的array[i]--array[n-2](array[i+1]--array[n-1])集合中,重複上述步驟,直到集合剩餘1個元素。
直接選擇排序的特性總結:數據結構

  1. 直接選擇排序思考很是好理解,可是效率不是很好。實際中不多使用
  2. 時間複雜度:O(N^2)
  3. 空間複雜度:O(1)
  4. 穩定性:不穩定

2)堆排序
堆排序(Heapsort)是指利用堆積樹(堆)這種數據結構所設計的一種排序算法,它是選擇排序的一種。它是經過堆來進行選擇數據。須要注意的是排升序要建大堆,排降序建小堆。
直堆排序的特性總結:ide

  1. 堆排序使用堆來選數,效率就高了不少。
  2. 時間複雜度:O(N*logN)
  3. 空間複雜度:O(1)
  4. 穩定性:不穩定

三丶交換排序
基本思想:所謂交換,就是根據序列中兩個記錄鍵值的比較結果來對換這兩個記錄在序列中的位置,交換排序的特色是:將鍵值較大的記錄向序列的尾部移動,鍵值較小的記錄向序列的前部移動。
1)冒泡排序
冒泡排序的特性總結:性能

  1. 冒泡排序是一種很是容易理解的排序
  2. 時間複雜度:O(N^2)
  3. 空間複雜度:O(1)
  4. 穩定性:穩定

2)快速排序
快速排序是Hoare於1962年提出的一種二叉樹結構的交換排序方法,其基本思想爲:任取待排序元素序列中的某元素做爲基準值,按照該排序碼將待排序集合分割成兩子序列,左子序列中全部元素均小於基準值,右子序列中全部元素均大於基準值,而後最左右子序列重複該過程,直到全部元素都排列在相應位置上爲止。
快速排序的特性總結:測試

  1. 快速排序總體的綜合性能和使用場景都是比較好的,因此纔敢叫快速排序
  2. 時間複雜度:O(N*logN)
  3. 空間複雜度:O(logN)
  4. 穩定性:不穩定

四丶並歸排序
並歸排序

歸併排序(MERGE-SORT)是創建在歸併操做上的一種有效的排序算法,該算法是採用分治法(Divide and Conquer)的一個很是典型的應用。將已有序的子序列合併,獲得徹底有序的序列;即先使每一個子序列有序,再使子序列段間有序。若將兩個有序表合併成一個有序表,稱爲二路歸併。
歸併排序的特性總結:優化

  1. 歸併的缺點在於須要O(N)的空間複雜度,歸併排序的思考更多的是解決在磁盤中的外排序問題。
  2. 時間複雜度:O(N*logN)設計

  3. 空間複雜度:O(N)
  4. 穩定性:穩定

非比較排序
計數排序又稱爲鴿巢原理,是對哈希直接定址法的變形應用。 操做步驟:
1.統計相同元素出現次數
2.根據統計的結果將序列回收到原來的序列中blog

計數排序的特性總結:
1.計數排序在數據範圍集中時,效率很高,可是適用範圍及場景有限。
2.時間複雜度:O(MAX(N,範圍))
3.空間複雜度:O(範圍)
4.穩定性:穩定排序


腦圖助記
常見排序算法整理總結
表格助記
常見排序算法整理總結

相關文章
相關標籤/搜索