iOS常用算法之两个有序数组合并(要求时间复杂度为0 (n))

  

  

常规思路:

  

先将一个数组作为合并后的数组,然后遍历第二个数组的每项元素,一一对比,直到找到合适的,就插入进去;

  

简单思路:设置数C组,对比A和B数组的首项元素,找到最小的,就放入数组C,依次进行下去。

  

代码如下:

        ——(NSArray *) mergeOrderArrayWithFirstArray:(NSMutableArray *) array1 secondArray: (NSMutableArray *) array2 {//全为空不处理   如果(! array1。数,,! array2.count) {   回复@ [];   }//一个为空返回另外一个   如果(! array1.count) {   返回array2;   }   如果(! array2.count) {   返回array1;   }   NSMutableArray * endArray=[NSMutableArray数组);   而(1){   如果([array1 [0] integerValue] & lt;[array2 [0] integerValue]) {   [endArray addObject: array1 [0]];   [array1 removeObjectAtIndex: 0];   其他}{   [endArray addObject: array2 [0]];   [array2 removeObjectAtIndex: 0];   }   如果(! array1.count) {   [endArray addObjectsFromArray array2):;   打破;   }   如果(! array2.count) {   [endArray addObjectsFromArray array1):;   打破;   }   }   返回endArray;   }      

执行代码,输入输出结果如下:

  

 iOS常用算法之两个有序数组合并(要求时间复杂度为0 (n))
  

  

  

以上所述是小编给大家介绍的iOS常用算法之两个有序数组合并(要求时间复杂度为0 (n)),希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持。
  如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

iOS常用算法之两个有序数组合并(要求时间复杂度为0 (n))