package com.algorithms;
public class Quick {
/**
* 对快速排序进行优化,含有重复元素较多时 效率更高
* @param integers
* @param low
* @param hight
*/
public static void sort(int[] integers,int low,int hight) {
if (hight<=low) {
return;
}
int lt=low;
int i=low+1;
int gt=hight;
int key=integers[low];
while (i<=gt) {
int cmp=integers[i]-key;
if (cmp<0) {
int t=integers[i];
integers[i]=integers[lt];
integers[lt]=t;
i++;
lt++;
}else if (cmp>0) {
int t=integers[i];
integers[i]=integers[gt];
integers[gt]=t;
gt--;
}else {
i++;
}
}
sort(integers, low,lt-1 );
sort(integers, gt+1, hight);
}
public static void main(String[] args) {
int[] integers=new int[]{3,9,5,7,1,4,8};
sort(integers, 0, integers.length-1);
for (int i : integers) {
System.out.println(i);
}
}
}
快速排序-三向切分(java实现)
最新推荐文章于 2022-03-03 16:50:04 发布