美文网首页
有序顺序表的归并

有序顺序表的归并

作者: 胶布小子 | 来源:发表于2020-02-06 21:11 被阅读0次

本文为原创文章,转载请注明出处,谢谢你……
喜欢java并发编程的请加群:736156823
开始-->

有序顺序表的归并

顺序表,有点:随机存储;缺点:但是删除插入不适宜。

public class MergeList {
    private MergeList() {

    }

    public static final MergeList create() {
        return new MergeList();
    }

    public int[] merge(int[] first, int[] second) {
        if (null == first || null == second) {
            return new int[0];
        } else {
            if (first.length == 0) {
                return second;
            } else if (second.length == 0) {
                return first;
            } else {
                int f = first.length;
                int s = second.length;
                int t = f + s;
                int[] third = new int[t];
                int i = 0;
                int j = 0;
                int k = 0;
                for (; ; ) {
                    if (i < f && j < s) {
                        if (first[i] < second[j]) {
                            third[k] = first[i];
                            k++;
                            i++;
                        } else if (first[i] == second[j]) {
                            third[k] = first[i];
                            k++;
                            i++;
                            third[k] = second[j];
                            k++;
                            j++;
                        } else {
                            third[k] = second[j];
                            k++;
                            j++;
                        }
                    } else {
                        break;
                    }
                }
                for (; i < f; ) {
                    third[k] = first[i];
                    k++;
                    i++;
                }
                for (; j < s; ) {
                    third[k] = second[j];
                    k++;
                    j++;
                }
                return third;
            }
        }
    }

    public static void main(String[] args) {
        int[] first = new int[99999999];
        int[] second = new int[99999999];
        for (int i = 0; i < 99999999; i++) {
            first[i] = i + 1;
            second[i] = i + 3;
        }
        long sum = 0;
        int times = 32;
        for (int i = 0; i < times; i++) {
            long s = System.currentTimeMillis();
            System.out.println("init done, ");
            MergeList mergeList = MergeList.create();
            int[] third = mergeList.merge(first, second);
            long e = System.currentTimeMillis();
            long cust = e - s;
            sum = sum + cust;
            System.out.println(third.length + ", cust=" + cust);
        }
        long vurge = sum / times;
        System.out.println("vurge=" + vurge);
    }
}

运行结果

image.png

喜欢java并发编程的请加群:736156823
有问题欢迎指正,这是新鲜出炉的
结束-->
本文为原创文章,转载请注明出处,谢谢你……

相关文章

  • 有序顺序表的归并

    本文为原创文章,转载请注明出处,谢谢你……喜欢java并发编程的请加群:736156823开始--> 有序顺序表的...

  • 排序算法☞java代码实现归并排序

    归并排序:归并的含义是将两个或两个以上的有序表合并成一个新的有序表。归并排序有多路归并排序、两路归并排序 , 可用...

  • 排序 | 归并排序 Merge Sort

    【算法】归并排序 归并排序(Merge Sort)就是将两个或两个以上的有序表合并成一个有序表的过程。 归并排序的...

  • 线性表习题05

    图中假设的是尾插法 得到顺序的链表 当一个表元素 全部归并之后 剩余的表元素肯定有序 且大于结果表的元素挨个插入 ...

  • 归并排序

    归并排序 所谓归并,就是将两个或两个以上的有序表合并成一个新的有序表。如下图所示,有两个已经排好序的有序表A[1]...

  • 归并排序

    归并排序算法思想 所谓归并,就是将两个或两个以上的有序表合并成一个新的有序表。有两个已经排好序的有序表A[1]A[...

  • 【数据结构】【C#】021-归并类排序: ✌二路归并(稳定)

    归并排序:二路归并(稳定) 基本思想:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即...

  • 【数据结构】7 合并有序顺序表

    将两个有序顺序表合并成一个新的有序顺序表,并由函数返回结果顺序表

  • Java归并排序,代码,优缺点

    一. 概念 归并的含义是将两个或两个以上的有序表合并成一个新的有序表。大体分成,两路归并排序,和多路归并排序。用于...

  • 数据结构课程 第四周 线性表、链式表的比较和应用

    顺序表和链式表的比较 线性表的应用 线性表的合并 有序表的合并 有序表的合并 用顺序表实现 有序表的合并 用链式表...

网友评论

      本文标题:有序顺序表的归并

      本文链接:https://www.haomeiwen.com/subject/vqxpxhtx.html