Advertisement

两个有序数组相加得到一个有序数组

阅读量:

两个已排序数组的整合以生成单一有序数组

1. 题目描述

已知数组a与数组b各自均保持有序状态,现需寻找一种高效策略,将二者整合为单一数组,同时确保最终生成的数组依然维持有序特性。

2. 从后往前合并

这道题是师兄在电话面试阿里巴巴时被问到的问题。接下来我们来探讨一下解决思路~

假设数组a的长度足够,可以在该数组的基础上进行两个数组的合并。我们采用的策略是从数组末尾开始向前进行合并操作。

在每次合并过程中,需要比较数组a和数组b当前元素的大小,将较大的数值向后移动一位,需要注意的是,这里必须执行的是后移操作!

为何选择从后往前的方式?其根本原因在于这样能够更方便地实现后移操作,因为较大的数值通常位于数组的后面。

以下是具体的程序实现:

复制代码
 #include<iostream>

    
 using namespace std; 
    
 #define MAX 100
    
 int main()
    
 {
    
 	int a[MAX]={1,3,5,7,9}; 
    
 	int b[MAX]={2,4,6,8}; 
    
 	int len1=5, len2=4; 
    
  
    
 	int p1=len1-1, p2=len2-1;  //从后往前遍历
    
 	int 

全部评论 (0)

还没有任何评论哟~