快速排序(O(nlogn)):将数组第一个数当做基准数,定义两个指针分别指向待排序数组的左右两段,移动右边指针找到比基准数小的数停止,移动左边指针找到比基准数大的数停止,之后两个指针的值互换,继续寻找至两个指针重合,重合的数值和基准数互换。原第一个数到达正确位置,其左右进行递归快排。
public static void quickSort(int[] arr,int left,int right){
if(left >= right){
return;
}
int base =arr[left];
int i =left;
int j =right;
while(i!=j){
while(arr[j] >=base && i<j){
j--;
}
while(arr[i] <=base && i<j){
i++;
}
int temp =arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
arr[left]=arr[i];
arr[i]=base;
quickSort(arr,left,i-1);
quickSort(arr,i+1,right);
}