什么是快速排序?
快速排序,有称划分交换排序。通过一趟排序将待排记录分隔成两个独立部分,其中记录的一部分关键字比另一部分的关键字小,则可分别对这两部分继续排序,以达到整个序列有序。
基本思想:
1.从数列中选择一个元素,作为“基准”(pivot)
2.重新排序数列,将比基准小的元素摆在基准前面,比基准大的元素摆在基准后面
3.递归排列比基准小的子序列和比基准大的子序列
以{26,53,48,15,13,46,32,15}
public static void quickSort(int[] nums, int start,int end){
if (start > end){
return;
}
int left = start;
int right = end;
int pivot = nums[(start+end)/2];
while (left <= right){
while (left <= right && nums[left] < pivot){
left++;
}
while (left <= right && nums[right] > pivot){
right--;
}
if (left <= right){
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
left++;
right--;
}
}
quickSort(nums,start,right);
quickSort(nums,left,end);
}