快速排序?qū)⒌谝粋€(gè)數(shù)值作為基準(zhǔn)值,從右往左找到比基準(zhǔn)值小的數(shù)值與從左往右的大于基準(zhǔn)值的數(shù)值交換(必須先從右往左再?gòu)淖笸遥┊?dāng)兩邊重疊的時(shí)候,那么當(dāng)前索引位置就是基準(zhǔn)值的中間位,此時(shí)左邊的數(shù)值全部小于基準(zhǔn)值,右邊的數(shù)值全部大于基準(zhǔn)值,對(duì)兩邊進(jìn)行二分遞歸排序。
public static void quicksort(int[] nums,int first,int last){
if(first>=last)
{
return;
}
int i=first;
int j=last;
int flag=nums[i];
while(i != j){
for(;i < j && nums[j] >= flag; j--){}
for(;i < j && nums[i] <= flag; i++){}
int temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;
}
nums[first]=nums[i];
nums[i]=flag;
quicksort(nums,first,i-1);
quicksort(nums,i+1,last);
for(int n:nums)
{
System.out.print(n+",");
}
System.out.println("");
}