資料結構與演算法-----快速排序

來源:互聯網
上載者:User

標籤:com   info   元素   post   nbsp   原理   src   family   class   

  快速排序的原理是,每一次排序都找一個基準數,然後比基準數大的元素,放到基準數的右側,比基準數小的元素放到基準的左側,那麼最核心的就是找到基準數的位置, 把基準數放到它應在的位置。現在我們對6 1 2 7 9 3 4 5 10 8 進行排序。

   首先找一個基準數,就是一個參照數, 用來進行比較。 為了簡單起見,那就選第一個數6作為基準數好了,我們要做的事就是找到6 所在的位置,讓6右邊的數比它大,讓6左邊的數比它小 如下形式。

  3 1 2 5 4 6 7 9 10 8 

  我們怎麼才能找到6 應該在的位置呢? 方法很簡單,那就是從序列3 1 2 5 4 6 7 9 10 8 的兩端進行探測。先從序列的右側進行尋找, 只要找到一個比基準數6大的數就停下來,然後再從序列的左邊進行尋找,只要找到一個比基準數6小的數就停止,這時交換它們兩個的位置。 這時我們可以用兩個變數i 和 j 分別指向序列的最左側和最右側。剛開始的時候,變數i 指向序列的最左邊,就是數字6, j指向序列的最右邊,指向數字8, 如所示

 

  首先j 從右向左移動,只要找到比6小的數就停止下來,j到了5的位置。這時i 再從左向右出發, 只要找到比6大的數就停止下來,所以它到了7的位置

  這時交換這兩個數的位置

 

  第一次交換結束,序列變成了 6, 1, 2, 5, 9 , 3 5, 7, 10, 8.  數字5 和數字7進行了交換。現在j 接著向左走,到了4的位置就停下來,因為4也比6小。這時i 接著從左向右走,到了9的位置,9比6 大。

  然後再交換它們的位置

  又一次的交換結束了,我們的序列變成了 6 1 2 5 4 3 9 7 10 8 。 現在接著繼續探測, j 接著向左走,到了3的位置就停止了,它比6小。 接著i向右走,突然發現i和j 相遇了,都到了3的位置上,表明探測結束了。

  基準數6的位置應該在3的位置上,我們來交換3和6位置

 

到這時我們終於找到的6的位置,比6大的數在它的右側,比6小的數在它的左側

 

 

  

資料結構與演算法-----快速排序

聯繫我們

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