合并有序数组

题目:有两个数组a[m]和b[n],将它们合并成数组c[m+n],需要c[m+ n]也是有序数组。
两种实现思路:

  1. 定义一个新数组,长度为两个数组长度之和,将两个数组都copy到新数组,然后排序。

  2. 给两个数组分别定义一个下标,最大长度是数组长度减一,按位循环比较两个数组,较小元素的放入新数组,下标加一(注意,较大元素对应的下标不加一),直到某一个下标超过数组长度时退出循环,此时较短数组已经全部放入新数组,较长数组还有部分剩余,最后将剩下的部分元素放入新数组,大功告成。

 - (void)viewDidLoad {
 [super viewDidLoad];

//实例化数组 A
 NSMutableArray *arrA = [NSMutableArray arrayWithArray:@[@1,@3,@5,@7,@9,@11]];
 //实例化数组 B
 NSMutableArray *arrB = [NSMutableArray arrayWithArray:@[@8,@15,@17,@20,@22,@35]];
//新数组
 NSMutableArray *marr = [NSMutableArray array];
//开始遍历
 for(int i = 0; i< 100; i++) {
 if (arrA[0] < arrB[0]) {
 [marr addObject:arrA[0]];
 [arrA removeObject:arrA[0]];
 }else{
 [marr addObject:arrB[0]];
 [arrB removeObject:arrB[0]];
 }
 NSLog(@"已经循环了--->>%d次",i);
 if (arrA.count == 0){
 [marr addObjectsFromArray:arrB];
 NSLog(@"新数组--->>%@",marr);
 return;
 }
 if (arrB.count == 0){
 [marr addObjectsFromArray:arrA];
 NSLog(@"新数组---->> %@",marr);
 return;
 }
 }
 }

第一种方式应该是大多数人想到的,也比较容易实现,下面主要来实现第二种方式。

代码如下:

i++  :先引用后增加
++i  :先增加后引用
//两个有序数组的合并函数  
    int *MergeList(int a[],int b[])  
    {  
        int lena = a.length;  
        int lenb = b.length;  
        int *result = (int *)malloc(sizeof(int)*(lena+lenb));    
          
              
        int i=0,j=0,k=0;   //i:用于标示a数组    j:用来标示b数组  k:用来标示传入的数组  
  
        while(i<lena && j<lenb)  
            if(a[i] <= b[j]) {  
                result[k++] = a[i++];  
            }else{  
                result[k++] = b[j++];  
            }  
  
        /* 后面连个while循环是用来保证两个数组比较完之后剩下的一个数组里的元素能顺利传入 */  
        while(i < lena)   
            result[k++] = a[i++];  
        while(j < lenb)  
            result[k++] = b[j++];  
          
        return result;  
        }  
    }  
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称...
    朱森阅读 4,361评论 2赞 13
  • 尊敬的时间先生(或女士): 我是一名普普通通的地球公民,冒昧的写信讨饶您,我感到万分抱歉。但这事关阁下的声誉和威望...
    梦里秋蝉阅读 587评论 1赞 4
  • 踩着轻快的步伐,用不快不慢的匀速,决没有比赛时紧张的攀爬和压力,既没微汗也不觉寒冷,天气刚刚好,我就这样走进...
    云紫烟阅读 475评论 0赞 1
  • 游华山之前,看到一则攻略上说,在华山有挑夫专为游人唱歌取乐,很是滑稽好玩。 看的时候没在意,没想到在爬华山的途中,...
    可可林阅读 868评论 0赞 0
  • 不经意翻看到芭蕾舞蹈家季萍萍老师的分享,被她那涌动的艺术之心所震撼,写下此文: 走上艺术之路的人很多,最后,能成为...
    心智玩家的简书阅读 967评论 1赞 4

友情链接更多精彩内容