标签:排序 nbsp ges pre length color new 有序 中间
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
public static void MergeSort(int[] array,int start,int end) { if (array == null || start > end) return; if(start < end) { int mid = (start + end) / 2; MergeSort(array, start, mid); MergeSort(array, mid + 1, end); Merge(array, start, mid, end); } } static void Merge(int[] array,int start,int mid,int end) { int[] temp = new int[end - start + 1];//中间数组 int i = start;//左开头 int j = mid + 1;//右开头 int k = 0; while (i <= mid && j <= end)//把较小的数先移到新数组中 { if (array[i] <= array[j]) { temp[k++] = array[i++]; } else { temp[k++] = array[j++]; } } // 把左边剩余的数移入数组 while (i <= mid) { temp[k++] = array[i++]; } // 把右边边剩余的数移入数组 while (j <= end) { temp[k++] = array[j++]; } // 把新数组中的数覆盖nums数组 for (int p = 0; p < temp.Length; p++) { array[start + p] = temp[p]; } }
标签:排序 nbsp ges pre length color new 有序 中间
原文地址:https://www.cnblogs.com/zangjiapei/p/11444072.html