归并排序

    xiaoxiao2025-10-28  6

    class MergeSort { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] array = new int[]{7,3,43,5,65,7,8,98,90,5,345,35,34}; int[] tmp = new int[array.length]; mergeSort(array, tmp, 0, array.length-1 ); for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } } public static void merge(int[] arry, int[] tmp, int begin, int stop){ if(begin >= stop) return; int mid = (begin+stop)/2; int i = begin; int j = mid+1; int s = 0; while(i <= mid && j <= stop){ if(i <= mid && arry[i] <= arry[j] ){ tmp[s++] = arry[i++]; } if(i <= mid && arry[i] >= arry[j] ){ tmp[s++] = arry[j++]; } } while(i <= mid){ tmp[s++] = arry[i++]; } while(j <= stop){ tmp[s++] = arry[j++]; } for (int k = 0; k <= stop - begin; k++) { arry[begin + k] = tmp[k]; } } public static void mergeSort(int[] array,int[] tmp, int begin, int stop ){ int mid = (begin +stop ) / 2; if(begin >= stop) return; mergeSort(array, tmp, begin, mid); //递归将左侧排序 mergeSort(array, tmp, mid+1, stop); //递归将右侧排序 merge(array, tmp, begin, stop); //合并begin到stop区间的数据 } }
    转载请注明原文地址: https://ju.6miu.com/read-1303621.html
    最新回复(0)