用快排算法(QuickSort)将待排序数组划分成长度不大于10的若干子数组之后,改用插值排序(InsertSort)完成剩下的排序工作,这是因为当比较大小(Compare)这个操作本身就很复杂的时候,插值排序在小规模数组上的表现比快排更好,假如排序的是字符串等复杂对象,效果会更明显。
quickSort方法里用到了两个方法,partition方法用来确定快排算法基准数的位置,insertSort方法就是常见的插值排序算法,代码如下:
/**快速排序*/
static void quickSort(int[] a, int low, int up) {
if (low >= up)
return;
//距离不小于10,使用递归快排,否则改用插入排序
if (up - low >= 10) {
int j = partition(a, low, up);
qu