簡單原理:
快速排序是對氣泡排序的改進,用分而治之的思想,先找到乙個基準數,利用基準數進行一輪排序,將所有比它小的數都放在左邊,再將所有比它大的數都放在它右邊,
然後返回基準數的位置,進行下一輪排序,下一輪將分別對基準數左右兩邊進行排序,依次迴圈,直到最後排序完成。
**實現:
import輸出結果:org.codewy.util.printutil;
/*** 快速排序 */
public
class
quicksort
}private
static
int partition(int source, int i, int
j)
//將找到的數與放到基準數的位置
if (i
//從左邊開始找到第乙個比基準數大的數
while (i < j && source[i] <=pointval)
//將找到的數放到上一步找到的val1之前的位置
if (i
}//將基準數放到陣列中,它左邊的數都比他小,右邊的數都比他大
source[i] =pointval;
//返回下一次迴圈的分界點
printutil.printintarr(source);//
列印每輪排序完後的狀態
return
i; }
public
static
void
main(string args) ;
qiucksort(source, 0, source.length-1);
printutil.printintarr(source);}}
快速排序學習
快速排序利用了分治策略。分治策略可以分為3個步驟 對乙個典型的子陣列a p.r 進行快速排序的分治過程如下 快速排序的偽 如下 為了排序陣列a的全部元素,初始呼叫quicksort a,1,a.length 其中最關鍵的部分就是陣列的劃分partition,它實現了對子陣列a p.r 的原址重排。偽...
快速排序學習
下面是我寫的 public function quicksortme a array,left int,right int void 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 1.從第乙個元素開始,該元素可以認為已經被排序 2.取出下乙個元素,在已經排序的元素序列中從...
C 快速排序 隨機快速排序 學習記錄
都是網上的資源,侵刪。快速排序演算法以及其他演算法的時間以及空間複雜度 我認為比較好理解的思路 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數。坑填數1 i l j r 將基準數挖出...