java七大排序——7_归并排序
发布时间:2020-12-15 07:51:38 所属栏目:Java 来源:网络整理
导读:归并排序: 将数组分为2块,再到每一小块再分为两块,直到最后一个元素为一块,然后进行有序数组合并,最终合并为一个有序数组 代码实现 public static void mergeSorts ( int[] array){ mergeSortsInternal(array,array.length)//mergeSortsInternalNoR(arr
归并排序:
将数组分为2块,再到每一小块再分为两块,直到最后一个元素为一块,然后进行有序数组合并,最终合并为一个有序数组 public static void mergeSorts ( int[] array){ mergeSortsInternal(array,array.length) //mergeSortsInternalNoR(array); } /** * 归并排序:递归内部排序 */ public static void mergeSortInternal ( int[] array,int low,int high){ if (low + 1 >= high) {//[low,high) return; } int mid = (low + high) / 2; mergeSortInternal(array,low,mid); mergeSortInternal(array,mid,high); merge(array,high); } private static void merge ( int[] array,int mid,int high){ int length = high - low; int[] extral = new int[length]; //[low,mid] //[mid,high] int less = low; int great = mid; int i = 0; while (less < mid && great < high) { if (array[less] <= array[great]) { extral[i] = array[less]; less++; i++; } else { extral[i] = array[great]; great++; i++; } } while (less < mid) { extral[i++] = array[less++]; } while (great < high) { extral[i++] = array[great++]; } for (int j = 0; j < length; j++) { array[low + j] = extral[j]; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |