• 归并两个有序的数组


    两个数组int a[m],b[n]。他们分别是有序的,a足够长(共m + n元素,末尾有n空位),请把它们归并到数组a中

     采用从后往前merge的方法:merge的思路定义:i,j,k,分别指向三个地方。

    #include<stdio.h>
    
    void merge(int *a,int *b,int m,int n);
    
    main()
    {
            int a[10],b[4];
            int i,m=6,n=4;
            printf("请输入两个有序数列:\n");
            for(i=0; i<m; i++)
                    scanf("%d",&a[i]);
            for(i=0; i<n; i++)
                    scanf("%d",&b[i]);
            merge(a,b,m,n);
            printf("归并后的数组:");
            for(i=0; i<m+n; i++)
                    printf("%d",a[i]);
            printf("\n");
    }
    
    void merge(int *a,int *b,int m,int n)
    {
            int i,j,k;
            i=m-1;
            j=n-1;
            k=m+n-1;
            while(i>=0 && j>=0){
                    if(a[i]>b[j]){
                            a[k]=a[i];
                            i--;
                    }   
                    else{
                            a[k]=b[j];
                            j--;
                    }   
                    k--;
            }   
            while(i>=0){
                    a[k]=a[i];
                    a[k]=a[i];
                    i--;
                    k--;
            }
            while(j>=0){
                    a[k]=b[j];
                    j--;
                    k--;
            }
    }
  • 相关阅读:
    中断
    按键
    uart stdio的移植1
    串口通信实战
    串口通信相关知识详解
    SOC时钟
    arm-linux-ld: cannot find sdram_init.o
    SDRAM初始化
    代码重定位实战
    s5pv210的启动过程
  • 原文地址:https://www.cnblogs.com/byking/p/2965587.html
Copyright © 2020-2023  润新知