排序之归并排序

    xiaoxiao2021-04-14  36

    先贴代码

    public class Mergers { private static int[] m_array = null; public static void sort (int[] array) { m_array = new int[array.length]; sort (array, 0, array.length-1); } private static void sort (int[] array, int start, int end) { if (start >= end) return; int mid = start + (end-start) / 2; sort (array, start, mid);// 注意的地方,若此处为mid-1,两个元素的话会产生递归 sort (array, mid+1, end);// 注意的地方,若此处为mid,两个元素会产生递归 merge (array, start, mid, end); } private static void merge (int[] array, int start, int mid, int end) { int l = start, r = mid+1, index = start; for (int i=start; i<=end; i++) m_array[i] = array[i]; while (l <= mid || r <= end) { if (l > mid) array[index++] = m_array[r++]; else if (r > end) array[index++] = m_array[l++]; else if (m_array[l] < m_array[r]) array[index++] = m_array[l++]; else array[index++] = m_array[r++]; } } }
    转载请注明原文地址: https://ju.6miu.com/read-670434.html

    最新回复(0)