美文网首页
iOS 合并两个有序数组

iOS 合并两个有序数组

作者: Goning | 来源:发表于2018-05-10 11:49 被阅读422次
    - (void)merge {
        /*
         有序数组A:1、4、5、8、10...1000000,有序数组B:2、3、6、7、9...999998,A、B两个数组不相互重复,请合并成一个有序数组C,写出代码和时间复杂度。
         */
        //(1).
        NSMutableArray *A = [NSMutableArray arrayWithObjects:@4,@5,@8,@10,@15, nil];
    //    NSMutableArray *B = [NSMutableArray arrayWithObjects:@2,@6,@7,@9,@11,@17,@18, nil];
        NSMutableArray *B = [NSMutableArray arrayWithObjects:@2,@6,@7,@9,@11,@12,@13, nil];
        NSMutableArray *C = [NSMutableArray array];
        int count = (int)A.count+(int)B.count;
        int index = 0;
        for (int i = 0; i < count; i++) {
            if (A[0]<B[0]) {
                [C addObject:A[0]];
                [A removeObject:A[0]];
            }
            else if (B[0]<A[0]) {
                [C addObject:B[0]];
                [B removeObject:B[0]];
            }
            if (A.count==0) {
                [C addObjectsFromArray:B];
                NSLog(@"C = %@",C);
                index = i+1;
                NSLog(@"index = %d",index);
                return;
            }
            else if (B.count==0) {
                [C addObjectsFromArray:A];
                NSLog(@"C = %@",C);
                index = i+1;
                NSLog(@"index = %d",index);
                return;
            }
        }
        //(2).
        //时间复杂度
        //T(n) = O(f(n)):用"T(n)"表示,"O"为数学符号,f(n)为同数量级,一般是算法中频度最大的语句频度。
        //时间复杂度:T(n) = O(index);
    }
    

    相关文章

      网友评论

          本文标题:iOS 合并两个有序数组

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