博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组归并排序
阅读量:5757 次
发布时间:2019-06-18

本文共 501 字,大约阅读时间需要 1 分钟。

题目

      有两个排序的数组A1和A2, 内存在A1的末尾有足够多的空余空间容纳A2,请实现一个函数,把A2中的所有数组 插入到A1中并且所有的数字都是排序的。

分析

      1.在内存中数组是线性表数据结构,数据都是按顺序储存的,如果从数组头部进行归并排序, 会出现一个数字多次复制的现象,内存开销比较大,从后往前复制会减少数字移动次数,减小开支。

      2.数组长度固定,先用指针指向A1和A2以及归并后A1的尾部下坐标。

      3.比较A1和A2指针处数字大小,把较大的数字放到归并后A1指针的位置,同时,较大数字所在数组和归并后A1指针向前移一个位置。

      4.如果A2中还有元素没有插入到A1中,则全部插入到A1的前面。

案列

      以数组A1[7,8,9,11]和A2[4,5,8,10]为例,初始时指针指向A1中的11,A2中的10,归并后A1的尾部下坐标

      

比较11和10,11大于10,把11复制到归并后A1尾部,A1和归并后A1指针向前移一个单位,A1指针指向9。

      

同理,比较10大于9,把10复制到归并后A1尾部,A2和归并后A1指针向前移一个单位,A2指针指向8

      

依次排序,直到归并成一个递增数组。

参考代码

      

转载地址:http://sunkx.baihongyu.com/

你可能感兴趣的文章