public static void main(String[] args) { int[] array = new int[13]; array[0] = 8; array[1] = 10; array[2] = 23; array[3] = 48; array[4] = 7; array[5] = 6; array[6] = 11; array[7] = 13; array[8] = 17; array[9] = 19; array[10] = 20; array[11] = 14; array[12] = 5; mergeSort(array,0, 12); for(int i : array){ System.out.println(i); } } public static void mergeSort(int[] array, int low, int high){ if(low < high){ int mid = (low + high) / 2; mergeSort(array,low,mid); mergeSort(array,mid + 1, high); mergeArray(array,low, mid, high); } } public static void mergeArray(int[] array, int low, int mid, int high){ int i= low; int j = mid+1; int k=0; int[] temp = new int[high - low + 1]; // 把较小的数先移到新数组中 while(i<=mid && j<=high){ if(array[i]<array[j]){ temp[k++] = array[i++]; }else{ temp[k++] = array[j++]; } } // 把左边剩余的数移入数组 while(i<=mid){ temp[k++] = array[i++]; } // 把右边边剩余的数移入数组 while(j<=high){ temp[k++] = array[j++]; } // 把新数组中的数覆盖nums数组 for(int x=0;x<temp.length;x++){ array[x+low] = temp[x]; } }
归并排序
最新推荐文章于 2021-11-18 12:53:25 发布