public class ImprovedMergeSort implements SortUtil.Sort { private static final int THRESHOLD = 10; public void sort(int[] data) {
int[] temp=new int[data.length];
mergeSort(data,temp,0,data.length-1);
} private void mergeSort(int[] data, int[] temp, int l, int r) {
int i, j, k;
int mid = (l + r) / 2;
if (l == r)
return;
if ((mid - l) >= THRESHOLD)
mergeSort(data, temp, l, mid);
else
insertSort(data, l, mid - l + 1);
if ((r - mid) > THRESHOLD)
mergeSort(data, temp, mid + 1, r);
else
insertSort(data, mid + 1, r - mid); for (i = l; i <= mid; i++) {
temp = data;
}
for (j = 1; j <= r - mid; j++) {
temp[r - j + 1] = data[j + mid];
}
int a = temp[l];
int b = temp[r];
for (i = l, j = r, k = l; k <= r; k++) {
if (a < b) {
data[k] = temp[i];
a = temp[i++];
//修改了查下看看错没
} else {
data[k] = temp[j--];
b = temp[j];
}
}
} /**
* @param data
* @param l
* @param i
*/
private void insertSort(int[] data, int start, int len) {
for(int i=start+1;i<start+len;i++){
for(int j=i;(j>start) && data[j]<data[j-1];j--){
SortUtil.swap(data,j,j-1);
}
}
} }if (a < b) {
data[k] = temp[i];
a = temp[i++];
//修改了查下看看错没
}
就是这句话 能帮我修改下吗
9 56 65 50 94 88 22 14 17 55 77 75 26 75 1 82 97 10 18 20
----------------------------
快速排序后的结果:
1 9 10 14 17 18 20 22 26 50 55 56 65 75 75 77 82 88 94 排序消耗时间:6618718
----------------------------
改进的快速排序后的结果:
1 9 10 14 17 18 20 22 26 50 55 56 65 75 75 77 82 88 94 排序消耗时间:607619
-----------------------------
Shell排序后的结果:
1 9 10 14 17 18 20 22 26 50 55 56 65 75 75 77 82 88 94 排序消耗时间:581639
------------------------------
冒泡排序后的结果:
1 9 10 14 17 18 20 22 26 50 55 56 65 75 75 77 82 88 94 排序消耗时间:551188
------------------------------
堆排序后的结果:
1 9 10 14 17 18 20 22 26 50 55 56 65 75 75 77 82 88 94 排序消耗时间:2318451
------------------------------
插入排序后的结果:
1 9 10 14 17 18 20 22 26 50 55 56 65 75 75 77 82 88 94 排序消耗时间:524927
------------------------------
归并排序后的结果:
1 9 10 14 17 18 20 22 26 50 55 56 65 75 75 77 82 88 94 排序消耗时间:1637918
------------------------------
改进的归并排序后的结果:
1 9 10 14 17 18 20 22 26 50 55 55 55 55 55 55 55 55 55 排序消耗时间:894248