java的快速排序怎么写?
时间: 2023-03-12 19:37:51 浏览: 74
快速排序是一种高效的排序算法,它的实现原理是通过不断地比较和交换来将一组数据依次排序。Java实现快速排序的基本思想是:
(1)从数列中挑出一个元素,称为“基准”(pivot);
(2)重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
(3)递归地(recursively)把小于基准值元素的子数列和大于基准值元素的子数列排序。
以下是Java实现快速排序的示例代码:
public static void quickSort(int[] array,int start,int end){
//数组为空或者长度小于2的时候不需要排序
if(array==null||array.length<2) return;
//start和end的合法性判断
if(start<0) start=0;
if(end>array.length-1) end=array.length-1;
//设定第一个数为基准
int pivot=array[start];
//记录当前划分的左右边界
int left=start;
int right=end;
//记录比较的次数
int count=0;
//从左边开始比较
while(left<right){
//右边大于基准
while(array[right]>=pivot&&left<right){
right--;
}
//左边小于基准
while(array[left]<=pivot&&left<right){
left++;
}
//两边交换
if(left<right){
int temp=array[left];
array[left]=array[right];
array[right]=temp;
}
}
//交换基准
array[start]=array[left];
array[left]=pivot;
//递归左边
quickSort(array,start,left-1);
//递归右边
quickSort(array,left+1,end);
}
阅读全文