各種排序的實現與複雜度分析(持續更新),排序持續

來源:互聯網
上載者:User

各種排序的實現與複雜度分析(持續更新),排序持續

穩定性:

選擇排序、快速排序、希爾排序、堆排序不是穩定的排序演算法,
冒泡排序、插入排序、歸併排序和基數排序是穩定的排序演算法。

複雜度

冒泡法:  複雜度為O(n*n)。當資料為正序,將不會有交換。複雜度為O(0)。不說了。

直接插入排序:O(n*n)

希爾排序:演算法的複雜度為n的1.2次冪

選擇排序:O(n*n)

快速排序:不穩定,平均時間複雜度O(nlogn),最壞情況時間複雜度為O(n2)。所有內部排序方法中最高好的,大多數情況下總是最好的。空間複雜度主要是遞迴造成的棧空間的使用,最好情況,遞迴樹的深度為log2n,其空間複雜度也就為O(logn),最壞情況,需要進行n‐1遞迴調用,其空間複雜度為O(n),平均情況,空間複雜度也為O(logn)

歸併排序:log2(n)*n

堆排序:log2(n)*n


排序方法

最好時間複雜度

平均時間複雜度

最壞時間複雜度

空間複雜度

是否穩定

冒泡排序

O(n)

O(n*n)

O(n*n)

O(1)

穩定

插入排序

O(n)

O(n*n)

O(n*n)

O(1)

穩定

選擇排序

O(n*n)

O(n*n)

O(n*n)

O(1)

不穩定

希爾排序

O(n)

不定

O(n*n)

O(1)

不穩定

堆排序

O(n*logn)

O(n*logn)

O(n*logn)

O(1)

不穩定

歸併排序

O(n*logn)

O(n*logn)

O(n*logn)

O(n)

穩定

快速排序

O(n*logn)

O(n*logn)

O(n*n)

O(logn)

不穩定

計數排序

O(n+k)

O(n+k)

O(n+k)

O(k)

穩定

基數排序

O(d(n+k))

O(d(n+k))

O(d(n+k))

O(k)

穩定

桶排序

O(n)

O(n)

O(n)

不定

取決於桶內

(表來源:http://blog.csdn.net/ns_code/article/details/20540069)



演算法實現:

首先是快速排序的實現

void quickSort(int A[], int low, int high){      if(low < high){        int i = low, j = high, key = A[i];        while(i < j){           while(i < j && A[j] > key) // 從右向左找第一個小於key的數              --j;            if(i < j)              A[i++] = A[j];            while(i < j && A[i] < key) // 從左向右找第一個大於等於key的數              ++i;            if(i < j)              A[j--] = A[i];            }        A[i] = key;                              //mid        quickSort(A,low,i-1);        quickSort(A,i+1,high);      }}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.