快速排序

快速排序首先在一個(gè)數(shù)組里面有兩個(gè)位置,一個(gè)是i,一個(gè)是j (圖一)


圖一

再尋找一個(gè)基準(zhǔn)數(shù)?一般都是數(shù)組的第一個(gè)數(shù)字為基準(zhǔn)數(shù),這時(shí)候 i 會(huì)向右→移動(dòng),來(lái)尋找比6大的數(shù)字, j 會(huì)向左←移動(dòng),來(lái)尋找比6小的數(shù)字,當(dāng)尋找到 i ,?j?找到數(shù)字時(shí),二者開(kāi)始交換,直到?i ==j 的時(shí)候,停止

public static? void main (String []args){

int arr[]={10,7,2,4,7,62,3,4,2,1,8,9,19};

quickSort(arr,0,arr.lenght-1);

}

public static void?quickSort(int [ ] arr,int low, int high)

{

int i , j , temp,t;

if(low>high)

{

return;

}

i=low;

j=high;

temp=arr[low]? ? ?//基準(zhǔn)位

while(i<j)

{

//先看右邊

while(temp<=arr[j]&&i<j)

{

j--;

}

while(temp>arr[j]&&i<j)

{

i++;

}

if(i<j)

{

t=arr[j];

arr[j]=arr[i];

arr[i]=t;

}

}

//最后把基準(zhǔn)位與i和j相等的位置進(jìn)行交換

arr[low]=arr[i];

arr[i]=temp;

//遞歸排序左半邊

quickSort (arr,0,j);

//遞歸右半邊

quickSort (arr,low,j-1);

quickSort (arr,j+1,high);?

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容