排序演算法總結之快速排序 歸併排序 shell排序

2021-07-10 07:17:51 字數 797 閱讀 6187

快速排序:

快排效率高,時間複雜度最理想為 o(nlogn) ,最差時間為o(n^2),該演算法不穩定。其主要思想如下:

快排是每次將序列第乙個數當作乙個參考值,分別將比參考值大的數放到參考值右側,小於參考值的數放到參考值左邊,將序列一分為二,對得到的兩個數列再分別進行上述操作,直到排序完成。

歸併(分治)排序:

歸併排序實質上是對將序列拆分為有序序列,然後對有序序列進行合併,時間複雜度為o(nlogn),而且演算法穩定。

程式**:

shell排序:

shell排序實際上是再不停減少相互比較的兩個數之間的距離(即增量)。如果前者大於後者則兩個數交換,如果前者小於後者則不交換,直到增量減為1,從而達到排序的功能。因為該演算法之間的交換不是相鄰兩個數之間的交換,所以該演算法不穩定,時間複雜度為o(n^2).

檢驗程式:

上述三種排序都可以用該程式來驗證,並檢測他們排序所用時間的長短。每次會產生隨即序列對其進行排序。由於排序速度較快,所以如要比較他們排序速度,應增加length的長度

排序演算法之快速排序 歸併排序,堆排序

一趟排序 取區間內第乙個元素作為基準,將該元素放在適當的位置,此時基準數左邊的數都比它小,基準數右邊的數都比大。接下來便用同樣的方法分別對左右兩邊的資料進行排序,直到序列中沒有元素或只有乙個元素。int partition int a,int low,int high a low temp retu...

排序演算法總結之 歸併排序

歸併就是將兩個或多個有序的序列合併成乙個有序序列的過程。二路歸併排序是面試中考查最多的排序演算法之一。歸併排序有兩種 1 一般歸併排序,空間複雜度o n 2 原地歸併排序,空間複雜度o 1 基本思想 將兩個或者兩個以上的有序表合成乙個新的有序表。歸併排序無論是順序儲存還是鏈式儲存結構都有較好的效能。...

堆排序 快速排序 歸併排序總結

二分查詢及其擴充套件應用場景 大端和小端的問題 2012 09 21 11 33 41 分類 演算法 資料結構 標籤 演算法資料結構 歸併排序 內部排序面試 舉報 字型大小大中小 訂閱這三個排序以前都寫過,快速排序還寫了遞迴版和迭代版。現在在這裡做一下總結。堆排序 heap sort 堆排序是一種樹...