快速排序
基本思想:
通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
算法描述
1.把数组中一个数当作基准数
2.一般把数组最边的数当成基准数,然后从数组两边开始检索,从右边检索比基准数小的,从左边检索比基准数大的;检索到了就停下,交换两个数组元素,之后继续检索。
3.检索相遇时,将检索下标对应的数据和基准数替换,并且基准数左边的数组和基准数右边的数组递归排序。
演示:
代码演示
public class Quicksort{
public static void main(String[] args){
int[] arr = new int[] {17,25,10,22,15,2,14,30,19};
quicksort(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
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){
whlie(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,0,i-1);
quickSort(arr,i+1,right);
}
}
执行结果