兩個有序數組合並成一個有序數組(要求時間復雜度為O(n))


面試題: 怎樣把兩個有序數組合並成有序數組呢

 邏輯步驟:

 1.假設兩個數組為A和B

 2.A和B都是從小到大的順序進行排列

 **

 1.我們可以直接比較兩個數組的首元素,哪個小就把這個小元素放入可變數組。

 2.把小元素所在的數組中的這個元素刪除。

 3.繼續比較兩個數組中的首元素,直到有一個數組為空。那么就停止進行比較。把另外一個不空的數組元素全部放入可變數組中即可。

實現代碼:

    NSMutableArray *arrA = [NSMutableArray arrayWithArray:@[@1,@3,@5,@7,@9,@11]];

    NSMutableArray *arrB = [NSMutableArray arrayWithArray:@[@8,@15,@17,@20,@22,@35]];

    NSMutableArray *marr = [NSMutableArray array];

    for(int i = 0; i< 100; i++)

    {

        NSNumber *anum = arrA[0];

        NSInteger a = anum.integerValue;

        NSNumber *bnum = arrB[0];

        NSInteger b = bnum.integerValue;

        if (a < b)

        {

            [marr addObject:[NSNumber numberWithInteger:a]];

            [arrA removeObject:[NSNumber numberWithInteger:a]];

        }else

        {

            [marr addObject:[NSNumber numberWithInteger:b]];

            [arrB removeObject:[NSNumber numberWithInteger:b]];

        }

        

        NSLog(@"循環了%d次",i);

        if (arrA.count == 0)

        {

            [marr addObjectsFromArray:arrB];

            NSLog(@"新數組%@",marr);

            break;

        }

        if (arrB.count == 0)

        {

            [marr addObjectsFromArray:arrA];

            NSLog(@"新數組%@",marr);

            break;

        }

    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM