关闭

剑指offer48相关例题

标签: 剑指offer48
443人阅读 评论(0) 收藏 举报
分类:

方法1.在A1中从头到尾复制数字,复制后数字保存在A1中。

#include<iostream>
using namespace std;
void  merge(int a[],int &a_length,int b[],int b_length){
    int i,j,k,m;
    i=0;
    j=0;m=a_length-1;
    while(j<=b_length-1&&i<=m){
        if(a[i]<=b[j])
            i++;
        else{
            
            for(k=m;k>=i;k--){
                a[k+1]=a[k];
            }
                a[i]=b[j];
                i++;
                j++;
                m++;
            }
    }

    if(j<b_length)
        while(j<=b_length-1)
            a[i++]=b[j++];
    a_length+=b_length;
}
int main(){
    int a[20],b[8];
    int a_length;
    int b_length;
    a[0]=2;
    a[1]=3;
    a[2]=4;
    a[3]=7;
    a[4]=7;
    a_length=5;
    b[0]=10;
    b[1]=22;
    b[2]=92;
b_length=3;

    merge(a,a_length,b,b_length);
    for(int i=0;i<a_length;i++)
        cout<<a[i]<<endl;

    return 0;
}


方法2:从尾到头复制数字

#include<iostream>
using namespace std;
void  merge(int a[],int &a_length,int b[],int b_length){
    int i,j,k,m;
    i=0;
    j=0;m=a_length-1;
    while(j<=b_length-1&&i<=m){
        if(a[i]<=b[j])
            i++;
        else{
            
            for(k=m;k>=i;k--){
                a[k+1]=a[k];
            }
                a[i]=b[j];
                i++;
                j++;
                m++;
            }
    }

    if(j<b_length)
        while(j<=b_length-1)
            a[i++]=b[j++];
    a_length+=b_length;
}
int main(){
    int a[20],b[8];
    int a_length;
    int b_length;
    a[0]=2;
    a[1]=3;
    a[2]=4;
    a[3]=7;
    a[4]=7;
    a_length=5;
    b[0]=10;
    b[1]=22;
    b[2]=92;
b_length=3;

    merge(a,a_length,b,b_length);
    for(int i=0;i<a_length;i++)
        cout<<a[i]<<endl;

    return 0;
}












































0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:177833次
    • 积分:3343
    • 等级:
    • 排名:第10126名
    • 原创:166篇
    • 转载:0篇
    • 译文:0篇
    • 评论:32条
    最新评论