思想:
选择一个关键字(一般是第一个),通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
代码:
```java
class Solution {
public static void main(String[] args) {
int[] arr = new int[]{5, 7, 9, 2, 6, 3, 1, 4, 8};
int[] res = new Solution().quickSort(arr,0,8);
for (int v:res){
System.out.print(v+" ");
}
}
public int[] quickSort(int[] array,int start,int end){
int pivot = array[start];
int i = start;
int j = end;
while (i<j){
while (i<j && array[j]>pivot){
j--;
}
while (i<j && array[i]<pivot){
i++;
}
if (i<j && array[i]==array[j]){
i++;
}else{
int tmp = array[j];
array[j] = array[i];
array[i] = tmp;
}
}
if(i-1 > start){
quickSort(array,start,i-1);
}
if (end > j+1){
quickSort(array,j+1,end);
}
return array;
}
}
时间复杂度:O(nlog_2n)