快速排序是在面试中经常被问到的排序算法,它的基本思想如下:
public class QuickSort{
public static void main(String[] args) {
int [] array = {2,4,1,6,8,5,3,7};
quickSort(array, 0, array.length-1);
}
public static void quickSort(int [] array, int start, int end){
if(start < end){
int partitionIndex = partition(array, start, end);
quickSort(array, start, partitionIndex-1);
quickSort(array, partitionIndex+1, end);
}
}
public static int partition(int [] array, int start, int end){
int pivot = array[end];
int partitionIndex = start;
for (int i = start; i < end; i++) {
if(array[i] <= pivot){
int temp = array[i];
array[i] = array[partitionIndex];
array[partitionIndex] = temp;
partitionIndex++;
}
}
int temp = array[partitionIndex];
array[partitionIndex] = array[end];
array[end] = temp;
return partitionIndex;
}
}
快速排序的分析:
1.快速排序采用了分治的思想
2.是递归的
3.是不稳定的
4.时间复杂度:
平均时间复杂度:O(nlogn) 最坏时间复杂度:O(n^2)