zoukankan      html  css  js  c++  java
  • java实现单链表归并算法

    public class LinkMergeSort {
        static int number=0;
        public static void main(String[] args) {
            int[] a = {10, 7, 3, 1, 40, 50, 99, 4, 2, 999 };
            printSequence("输入的数列:",a);
            Merge(a);
            printSequence("排序的数列:",a);
        }
        private static void printSequence(String pre,int[] a) {
            System.out.print(pre+"
    ");
            for(int i=0;i<a.length;i++)
                System.out.print(a[i]+"	");
            System.out.println();
        }
        private static void Merge(int[] a) {
            System.out.println("开始排序");
            Sort(a, 0, a.length - 1);
        }
        private static void Sort(int[] a, int left, int right) {
            if(left>=right)
                return;
            int mid = (left + right) / 2;
            //两次Sort实现二路归并用,n路归并就用n个Sort
            Sort(a, left, mid);
            Sort(a, mid + 1, right);
            merge(a, left, mid, right);
        }
    
        private static void merge(int[] a, int left, int mid, int right) {
            int[] tmp = new int[a.length];
            int r1 = mid + 1;
            int tIndex = left;
            int cIndex=left;
            // 逐个归并
            while(left <=mid && r1 <= right) {
                if (a[left] <= a[r1])
                    tmp[tIndex++] = a[left++];
                else
                    tmp[tIndex++] = a[r1++];
            }
            // 左边归并
            while (left <=mid) {
                tmp[tIndex++] = a[left++];
            }
            // 右边归并
            while ( r1 <= right ) {
                tmp[tIndex++] = a[r1++];
            }
            System.out.println("第"+(++number)+"趟排序:	");
            while(cIndex<=right){
                a[cIndex]=tmp[cIndex];
            //输出排序过程
                System.out.print(a[cIndex]+"	");
                cIndex++;
            }
            System.out.println();
        }
    }
  • 相关阅读:
    (转)超过 130 个你需要了解的 vim 命令
    ubuntu下解压文件命令大全(转)
    HDU 4681 String
    Linux使用过程中常见问题及其解决方法
    Linux 命令 及 简单操作 学习
    HDU 4666 Hyperspace (最远曼哈顿距离)
    POJ 2049 Finding Nemo
    HDU 4655 Cut Pieces
    <textarea>标签的使用
    数据库插入失败 和回滚
  • 原文地址:https://www.cnblogs.com/cdlyy/p/10199082.html
Copyright © 2011-2022 走看看