快速排序法

來源:互聯網
上載者:User

標籤:複製   bsp   targe   通過   data-   高效   hive   過程   qup   

這個排序方法的時間複雜度為O(nlogn),最壞時間複雜度為O(n^2),所以說是屬於所有排序方法中比較高效率的一種了。

 

這種排序方法的基本思想是:

先找到一個區間中的一個基準點,然後找到這個區間右邊所有小於這個基準點的元素都放到基準點左邊,還有這個區間左邊所有左邊大於這個基準點的元素都放到基準點右邊。用遞迴思想,將區間化小,一直小到只有一個元素即排序完成。

百度百科這麼說的:快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列

該思想的實現代碼寫出來可能不一樣,但是思想大概就是這個思想。

下面是我搜集到的一個人寫的快速排序的代碼:

 1 void partition(int a[], int start,int end) 2 { 3     if(start>=end) 4         return; 5      6     int low = start; 7     int heigh = end; 8     int index = a[low];                      // 基準點選在區間開頭的元素 9     10     while(low<heigh)11     {12         while(a[heigh]>index&&low<heigh)     // 從區間右側開始,找到比基準點index小的元素就放到區間左邊13         {14             heigh--;15         }16         if(low<heigh)17         {18             a[low++] = a[heigh];19         }20         while(a[low]<index&&low<heigh)       // 從區間左邊開始,找到比基準點index大的元素就放到區間右邊21         {22             low++;23         }24         if(low<heigh)25         {26             a[heigh--] = a[low];27         }28     }29     30     a[low] = index;                        // 把基準點放到區間中間31     partition(a,start,low-1);              // 把基準點左側的區間進行整理----遞迴32     partition(a,low+1,end);                // 把基準點右側的區間進行整理----遞迴33 }

下面是調用樣本:

    int a[] = {1,3,5,4,3,0,8,6};        partition(a,0,7);

運行結果:

參考文章:

  1. http://www.cnblogs.com/surgewong/p/3381438.html
  2. http://baike.baidu.com/link?url=GDBGdDYxqZmDS.....
  3. http://www.cnblogs.com/luchen927/archive/2012/02/29/2368070.html

快速排序法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.