zoukankan      html  css  js  c++  java
  • 归并排序java实现

    public static void main(String[] args) {
            int arr[]={2,4,6,8,14,1,3,5,9,11};
            merge(arr, 0, arr.length-1);
            for(int i=0;i<arr.length;i++){
                System.out.print(arr[i]+" ");
            }
        }
        
        //递归排序,分治法,自顶向下,递归分割数组,最终归并
        public static void merge(int [] arr,int start,int end){
            int mid=(start+end)/2;
            if(start<end){
                merge(arr, start, mid); //递归对arr[start...mid]排序
                merge(arr, mid+1, end);//递归对arr[mid+1...end]排序
                doMerge(arr,start,mid,end);//组合,将两个有序合并为一个有序区
            }
        }
    
        //组合,归并
        private static void doMerge(int[] arr, int start, int mid, int end) {
            int temp[]=new int[end-start+1];
            int tempIndex=0;
            int index=start;
            int right=mid+1;
            //两个子序列进行比较,小的放入临时数组
            while(index<=mid&&right<=end){
                if(arr[index]<=arr[right]){
                    temp[tempIndex++]=arr[index++];
                }else{
                    temp[tempIndex++]=arr[right++];
                }
            }
            //将左边剩下的元素加入到临时数组
            while(index<=mid){
                temp[tempIndex++]=arr[index++];
            }
            //将右边剩下的元素加入到临时数组
            while(right<=end){
                temp[tempIndex++]=arr[right++];
            }
            //复制临时数据到arrr[]数组中
            for(int i=0;i<temp.length;i++){
                arr[i+start]=temp[i];
            }
        }
  • 相关阅读:
    修改NavigationBarItem的字体大小和颜色的使用方法
    iOS 大文件断点下载
    iOS 文件下载
    UITableView优化
    iOS 应用的生命周期
    iOS RunLoop简介
    iOS 线程间的通信 (GCD)
    iOS 多线程GCD的基本使用
    iOS 多线程GCD简介
    CSS--复习之旅(一)
  • 原文地址:https://www.cnblogs.com/wenhulu/p/6146860.html
Copyright © 2011-2022 走看看