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

    算法思想:

    算法将数组分为两个子数组,然后对每个子数组递归应用归并排序。

    package introjava;

    public class MergeSort {
        public static void mergeSort(int [] list){
            if(list.length > 1){ //这是递归跳出的条件,一定要记住!!!
                int firstHalfLen = list.length / 2;
                int [] firstHalf = new int[firstHalfLen];
                System.arraycopy(list, 0, firstHalf, 0, firstHalfLen);
                mergeSort(firstHalf);

                int []secondHalf = new int [list.length - firstHalfLen];
                System.arraycopy(list, firstHalfLen, secondHalf, 0, list.length - firstHalfLen);  
                mergeSort(secondHalf);

                int [] temp = merge(firstHalf, secondHalf);
                System.arraycopy(temp, 0, list, 0, list.length);
            }
        }

        public static int [] merge(int [] list1, int [] list2){
            int [] temp = new int [list1.length + list2.length];

            int current1 = 0;
            int current2 = 0;
            int current3 = 0;

            while(current1 < list1.length && current2 < list2.length){
                if(list1[current1] < list2[current2])
                    temp[current3++] = list1[current1++];
                else
                    temp[current3++] = list2[current2++];
            }

            while(current1 < list1.length)
                temp[current3++] = list1[current1++];
            while(current2 < list2.length)
                temp[current3++] = list2[current2++];

            return temp;
        }
        public static void main(String []args){
            int [] list = {2, 3, 2, 5, 6, 1, -2, 3, 14, 12};
            mergeSort(list);
            for(int i = 0 ; i < list.length; i++)
                System.out.print(list[i] + " ");
        }
    }

  • 相关阅读:
    spring入门
    mybatis环境配置与入门例子
    wine 魔兽争霸
    不要再使用工具格式化代码!!!
    Android 动画 setVisibility 后出错解决方法
    AbsListView.OnScrollListener 使用注意事项
    linux 配置 wlan 连接
    练习:求完数问题
    重写:求比指定数大且最小的“不重复数”问题
    emacs 快捷键笔记
  • 原文地址:https://www.cnblogs.com/hansonzhe/p/3595577.html
Copyright © 2011-2022 走看看