快速排序是冒泡排序的优化
通常第一个定位基数,然后从后向前找比基数小的第一个数,
从前向后找第一个比基数大的数,然后互换位置。直到当指针重合时将基数与指针重合位置的数互换。最后重合位置的左边和右边分别递归调用。
package suanfa;
import java.util.Arrays;
public class Kuaipai {
public static void Kuaipai(int[] arr,int left,int right) {
if(left>right)
return;
int base = arr[left];
int i = left;
int j = right;
while(i<j) {
while(i<j&&arr[j]>=base) {
j--;
}
while(i<j&&arr[i]<=base) {
i++;
}
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
arr[left]=arr[i];
arr[i]=base;
Kuaipai(arr,left,i-1);
Kuaipai(arr,i+1,right);
System.out.println(Arrays.toString(arr));
}
public static void main(String[] args) {
int[] arr = {3,2,1,5,4,6,8,7,10,9};
int left=0;
int right=arr.length-1;
Kuaipai(arr,left,right);
}
}