百度的问题:
以及多线程的顺序执行问题
归并排序
两个顺序的数组排序
publicclass MergeSort { publicstaticvoidmerge(int[] a, int low, int mid, int high) { int[] temp = newint[high - low + 1]; int i = low;// 左指针int j = mid + 1;// 右指针int k = 0; // 把较小的数先移到新数组中while (i <= mid && j <= high) { if (a[i] < a[j]) { temp[k++] = a[i++]; } else { temp[k++] = a[j++]; } } // 把左边剩余的数移入数组while (i <= mid) { temp[k++] = a[i++]; } // 把右边边剩余的数移入数组while (j <= high) { temp[k++] = a[j++]; } // 把新数组中的数覆盖nums数组for (int k2 = 0; k2 < temp.length; k2++) { a[k2 + low] = temp[k2]; } } publicstaticvoidmergeSort(int[] a, int low, int high) { int mid = (low + high) / 2; if (low < high) { // 左边 mergeSort(a, low, mid); // 右边 mergeSort(a, mid + 1, high); // 左右归并 merge(a, low, mid, high); System.out.println(Arrays.toString(a)); } } publicstaticvoidmain(String[] args) { int a[] = { 51, 46, 20, 18, 65, 97, 82, 30, 77, 50 }; mergeSort(a, 0, a.length - 1); System.out.println("排序结果:" + Arrays.toString(a)); }