快速排序首先在一個(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);?
}