美文网首页
有序数组合并

有序数组合并

作者: 二斤寂寞 | 来源:发表于2020-03-08 15:24 被阅读0次

    将有序数组 {1,4,6,7,9} 和 {2,3,5,6,8,9,10,11,12} 合并为
    {1,2,3,4,5,6,6,7,8,9,9,10,11,12}

    - (void)orderListMerge
    {
        int aLen = 5,bLen = 9;
    
        int a[] = {1,4,6,7,9};
    
        int b[] = {2,3,5,6,8,9,10,11,12};
    
        [self printList:a length:aLen];
    
        [self printList:b length:bLen];
    
        int result[14];
    
        int p = 0,q = 0,i = 0;//p和q分别为a和b的下标,i为合并结果数组的下标
    
        //任一数组没有达到s边界则进行遍历
        while (p < aLen && q < bLen) {
    
            //如果a数组对应位置的值小于b数组对应位置的值,则存储a数组的值,并移动a数组的下标与合并结果数组的下标
            if (a[p] < b[q]) result[i++] = a[p++];
    
            //否则存储b数组的值,并移动b数组的下标与合并结果数组的下标
            else result[i++] = b[q++];
        }
    
        //如果a数组有剩余,将a数组剩余部分拼接到合并结果数组的后面
        while (++p < aLen) {
    
            result[i++] = a[p];
        }
    
        //如果b数组有剩余,将b数组剩余部分拼接到合并结果数组的后面
        while (q < bLen) {
    
            result[i++] = b[q++];
        }
    
        [self printList:result length:aLen + bLen];
    }
    - (void)printList:(int [])list length:(int)length
    {
        for (int i = 0; i < length; i++) {
    
            printf("%d ",list[i]);
        }
    
        printf("\n");
    }
    

    相关文章

      网友评论

          本文标题:有序数组合并

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