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++];
          //修改了查下看看错没
        }
就是这句话 能帮我修改下吗

解决方案 »

  1.   

    随机产生的数组:
    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