*演算法之快速排序
快速排序是分治演算法的一個典型例題,其主要思想是將問題規模縮小,
第一個問題是從哪一分為二:這個問題在快速排序中是假設陣列首項為中間值,由兩個指標依次向中間移動,左邊的指標檢測大于首項的,而右邊指標檢測小于首項的,然后進行交換,代碼如下

而后將首項調至中間,以此為中點分為兩個陣列再次進行一分為二,直到最后陣列化為僅一個元素的陣列,則無需調動,
代碼主要分為兩部分,一則是分,二則是排;代碼如下:
分:

排:

注意:如果用Java書寫此演算法會有一種情況報錯,就是在輸入陣列為降序是排序程式里會由于a[x]恒小于a[left]使得x一直自增,導致最后x>right,此時的while中的判斷a[x]陣列下標越界,固增加一個條件會使代碼更具健壯性

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/229450.html
標籤:其他
