Java数组排序算法(3)二路归并排序

Java数组排序算法(1)二路归并排序 织梦好,好织梦

下面函数使用二路归并排序算法给整型数组排序: 织梦好,好织梦

private static void mergeSort_v(int[] a, int start, int count){
    int count2 = count / 2;
    int start2 = start + (count -= count2);
 
    if (count > 1)
       mergeSort_v(a, start, count);
    if (count2 > 1)
       mergeSort_v(a, start2, count2);
 
    int i = start + count;
    int j = count;
 
    int[] temp = new int[count];
    while (j > 0) {
       temp[--j] = a[--i];
    }
    int k = start2;
 
    while(true){
       if (temp[j] <= a[k]) {
         a[i++] = temp[j++];
         if (j >= count)
          break;
       } else {
         a[i++] = a[k++];
         if (k >= start2 + count2) {
          while (j < count)
              a[i++] = temp[j++];
          break;
         }
       }
    }
}
 
public static void mergeSort(int[] a){
    if(a.length > 1)  mergeSort_v(a, 0, a.length);
}