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

  • 相关阅读:
    flex datagrid进行删除或增加操作后自动刷新
    java 一个很简单的applet
    转:35岁前必成功的12级跳(男女通用)
    flex DisplayObject UIComponent的区别
    flex flash.utils.Dictionary和Object
    java 正则表达式进行剔除字符
    Flex 元数据标签使用
    使用TableAdapter的Update方法使用注意事项
    android中捕捉menu按键的点击事件
    Repeater 嵌套repeater输出不规则列表
  • 原文地址:https://www.cnblogs.com/hansonzhe/p/3595577.html
Copyright © 2011-2022 走看看