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

    package sort_1;
    
    public class MergeSort1 {
    
        //利用归并排序算法
        public static void mergeSort(DataWrap[] data)
        {
            sort(data,0,data.length-1);
        }
        /**
         * 
         * @param data 待排序的数组
         * @param left 待排序的数组的第一个元素
         * @param right 待排序数组的最后一个元素
         */
        private static void sort(DataWrap[] data, int left, int right)
        {
            if(left < right)
            {
                int center = (left+right)/2;
                sort(data,left,center);
                sort(data,center+1,right);
                merge(data,left,center,right);
            }
        }
        /**
         * 将两个数组进行归并,归并前两个数组已经有序,归并后依然有序
         * @param data 数组对象
         * @param left 左数组元素的第一个元素的索引
         * @param center center是左数组元素的最后一个索引,center+1是右数组元素的第一个元素的索引
         * @param right 右数组的最后一个索引
         */
        private static void merge(DataWrap[] data,int left, int center, int right)
        {
            DataWrap[] tempArr = new DataWrap[data.length];
            int mid = center +1 ;
            int third = left;//third 记录中间数组的索引
            int temp = left;
            while(left<=center&&mid<=right)
            {
                if(data[left].compareTo(data[mid])<=0)
                {
                    tempArr[third++] = data[left++];
                }
                else
                {
                    tempArr[third++] = data[mid++];
                }
            }
            //剩余部分依次放入中间数组
            while(mid<=right)
                tempArr[third++] = data[mid++];
            while(left<=center)
                tempArr[third++] = data[left++];
            //将中间数组中的内容复制拷回原数组中
            //(原left~right范围的内容被复制回原数组)
            while(temp<=right)
                data[temp] = tempArr[temp++];
        }
        public static void main(String[] args)
        {
            DataWrap[] data = new DataWrap[]{
                    new DataWrap(2,""),
                    new DataWrap(5,""),
                    new DataWrap(1,""),
                    new DataWrap(3,""),
                    new DataWrap(6,""),
                    new DataWrap(9,""),
                    new DataWrap(8,""),
                    new DataWrap(4,""),
                    new DataWrap(7,""),
                    new DataWrap(0,""),
                    new DataWrap(11,""),
                    new DataWrap(10,""),
            };
            MergeSort1.mergeSort(data);
            System.out.println(java.util.Arrays.toString(data));
        }
        
        
        
    }
  • 相关阅读:
    Python基本数据类型(int str)个人笔记
    LINUX简单操作的笔记
    samba服务配置步骤
    IP地址的初步理解
    apache服务配置步骤
    [已解决]This dependency was not found: * common/stylus/index.styl in ./src/main.js To install it, you can run: npm install --save common/stylus/index.styl
    (转)iFrame高度自适应
    (转)Div左右两侧等高
    (转)Css样式兼容IE6,IE7,FIREFOX的写法
    瀑布流布局代码
  • 原文地址:https://www.cnblogs.com/xu-thinking/p/3328198.html
Copyright © 2011-2022 走看看