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] + " ");
        }
    }

  • 相关阅读:
    libsvm参数学习和核函数使用(转载)
    libsvm 训练后的模型参数讲解(转)
    Ternary Search Trees 三分搜索树
    分支界定法 branch-and-bound 分析与实现)(转载)
    几种常见的激活函数(转载)
    matlab神经网络实验
    递归神经网络2(转载)
    线性代数和numpy——黑板客老师课程学习
    关于 Intellij IDEA Ultimate Edition 14.1控制台中文乱码 解决
    Intellij IDEA Ultimate Edition 14.1 破解
  • 原文地址:https://www.cnblogs.com/hansonzhe/p/3595577.html
Copyright © 2011-2022 走看看