package sort;
/**
* ä¸åååå¿«éæåº
* å¯¹äºæå¤§ééå¤å
ç´ çæ°ç»ï¼å¯ä»¥å°æ°ç»åå为ä¸é¨åï¼åå«å¯¹åºå°äºãçäºå大äºååå
ç´ ã
*
* ä¸åååå¿«éæåºå¯¹äºåªæè¥å¹²ä¸å主é®çéæºæ°ç»å¯ä»¥å¨çº¿æ§æ¶é´å
宿æåºã
*
* @author å壮é£
* https://github.com/zfman.
* https://blog.csdn.net/lzhuangfei.
*/
public class ThreeWayQuickSort> extends QuickSort {
@Override
public void sort(T[] nums, int l, int h) {
if(l>=h) return;
int lt=l,i=l+1,gt=h;
T v=nums[l];
System.out.println(v);
while (i<=gt){
int compare=nums[i].compareTo(v);
if(compare<0){
swap(nums,lt++,i++);
}else if(compare>0){
swap(nums,i,gt--);
}else {
i++;
}
}
sort(nums,l,lt-1);
sort(nums,gt+1,h);
}
public static void main(String[] args){
Integer[] arr={
5,1,8,1,3,3,3,3,5,5,8,8,8
};
ArrayUtils.printArray(arr);
Sort sort=new ThreeWayQuickSort<>();
sort.sort(arr);
ArrayUtils.printArray(arr);
}
}