package T530;
/**
* @title: QuickSort
* @Author: zhanghanwen
* @Date: 2021/5/31 9:00
* @Version 1.0
* @description:
*/
public class QuickSort {
// 交换
private static void swap(int[] array, int i, int j) {
int temp;
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
// 确定基准点 left=0 right=array.length-1
private static int partitionIt(int[] array,int left,int right){
// 左游标
int i=left;
// 右游标
int j=right+1;
// 基准点array[0]
int pivot=array[left];
while(true){
while (i<right && array[++i]<pivot){
}
while (j>0 && array[--j]>pivot){
}
// 左游标和右游标重合 一趟比较结束-》左边或者右边进行同样的操作
if(i>=j){
break;
}else{
// 两个元素交换
swap(array,i,j);
}
}
// 一趟比较完之后也要将基准点移动到中间位置
swap(array,j,left);
// 返回基准点的位置下标
return j;
}
// 递归
private static void recQuickSort(int[] array,int left,int right){
if (right<=left){
return;
} else {
// 基准点 left=0 right=array.length-1
int standPoint = partitionIt(array, left, right);
System.out.println(standPoint);
// 递归左边的部分
recQuickSort(array,left,standPoint-1);
// 递归右边的部分
recQuickSort(array,standPoint+1,right);
}
}
// 排序
public static void sort(int[] array){
// 刚开始的基准点是array[0]
recQuickSort(array,0,array.length-1);
}
public static void main(String[] args) {
int[] array={12,11,34,23,56,42,76,12,99};
sort(array);
for (int i : array) {
System.out.print(i+"-");
}
}
}
快速排序编码记录
最新推荐文章于 2024-09-04 21:39:45 发布