演算法學習 快速排序QuickSort

2021-10-04 08:05:03 字數 921 閱讀 5857

思想:

選定數列裡面的第乙個數字或者最後乙個數字為基準數(pivot),把剩餘的數字中小於基準數的放在基準數的左側,其他放在右側,然後遞迴處理左側子數列和右側子數列。

舉例:(取第乙個數字為基準數字)

數列:6, 9, 3, 2, 7, 1

第一輪結果:3, 2, 1, 6, 9, 7

第二輪結果:2, 1, 3, 6, 7, 9

第三輪結果:1, 2, 3, 6, 7, 9

package cn.tx.algorithm.quicksort;

public

class

quicksort

public

static

void

qsort

(int

arr,

int nstart,

int nend)

while

(arr[

--j]

> npivot)

if(i < j)

swap

(arr, i, j)

;else

break;}

swap

(arr,nstart,j)

;qsort

(arr,nstart,j -1)

;qsort

(arr,j +

1,nend);}

public

static

void

main

(string[

] args)

;qsort

(array,

0,array.length -1)

;for

(int i =

0; i < array.length; i++)}

}

演算法學習 快速排序

快速排序 分治演算法 const int n 1e6 10 int a n a 待排序陣列,l 排序陣列的起始下標,r 排序陣列的結束下標 void quick sort int a,int l,int r 遞迴的終止條件 int x a l 選取排序的比較物件 int i l 1 設定排序的左指標...

演算法學習 快速排序

1 基本思想 取待排序陣列第乙個數作為參照數,建立left和right陣列,left儲存小於參照數的陣列集合,right儲存大於參照數的陣列集合,然後分別對left和right進行遞迴呼叫排序。2 舉例 11,2,3,43,23,5,6,9,10 取任意的乙個數為基準數 temp arr 0 遍歷陣...

排序演算法學習 快速排序

快速排序 作為氣泡排序的一種改進 通過設定乙個標誌值 通常為陣列第乙個元素pivot 一次快排將陣列分成兩個部分,一部分 公升序 前一部分 小於標誌值pivot,另一部分大於標誌值 公升序 後面部分 各部分內部可以是 通常也是 無序的。通過遞迴地呼叫這樣的排序,使得最終陣列所有的元素有序。一次具體的...