c语言(升序数组的合并),怎么解决?

#include <stdio.h> #include <stdlib.h> #include <malloc.h> //c合并升序数组a,b并存在c数组中

void uparr(inta,int m,intb,int n,int*c);

int main(void) { intnum1; intnum2; intnum3; int m; int i; printf("请输入a数组的长度\n"); scanf("%d",&m); num1=(int)malloc(sizeof(int)m); for(i=0;i<m;i++) { printf("请输入a数组的的元素"); scanf("%d",&num1[i]); } int n; printf("请输入数组b的长度\n") ; scanf("%d",&n); num2=(int)malloc(sizeof(int)n); for(i=0;i<n;i++) { printf("请输入b数组的的元素"); scanf("%d",&num2[i]); } int e=0; num3=(int)malloc(sizeof(int)*e); uparr(num1,m,num2,n,num3); printf("结果为\n"); for(e=0;e<m+n;e++) { printf("%d",&num3[e]); }

return 0;

}

void uparr(inta,int m,intb,int n,int*c) { int k,i,j=0; while(i<m&&j<n) { if(*a<*b) { c[k]=a[i]; a++; k++; i++; }else { c[k]=b[j]; b++; k++; j++; } } return; }

c
83 views
Comments
登录后评论
Sign In
·

老哥你代码能不能重新排版一下?

·

帮你格式化了一下,你还是个学生吧~运算符之间,小语句之间增加空格,养成比较好的编程习惯:

#include <stdio.h> 
#include <stdlib.h> 
#include <malloc.h> 
// c合并升序数组a,b并存在c数组中

void uparr(int a, int m, int b, int n, int* c);

int main(void) { 
    int num1;
    int num2;
    int num3;
    int m;
    int i;
    printf("请输入a数组的长度\n"); 
    scanf("%d", &m); 
    num1 = (int) malloc(sizeof(int)m); 
    for(i = 0; i < m; i++) { 
        printf("请输入a数组的的元素"); 
        scanf("%d", &num1[i]); 
    } 
    int n; 
    printf("请输入数组b的长度\n"); 
    scanf("%d", &n); 
    num2 = (int) malloc(sizeof(int)n); 
    for(i = 0; i < n; i++) { 
        printf("请输入b数组的的元素"); 
        scanf("%d", &num2[i]); 
    }
    int e = 0; 
    num3 = (int) malloc(sizeof(int) * e); 
    uparr(num1, m, num2, n, num3); 
    printf("结果为\n"); 
    for(e = 0; e < m + n; e++) { 
        printf("%d", &num3[e]); 
    }
    return 0;
}

void uparr(int a, int m, int b, int n, int* c) { 
    int k, i, j = 0; 
    while(i < m && j < n) { 
        if(*a < *b) { 
            c[k]=a[i]; 
            a++; 
            k++; 
            i++; 
        } else { 
            c[k]=b[j]; 
            b++; 
            k++; 
            j++; 
        } 
    } 
    return; 
}

两个文档建议你阅读一下:

Google styleguide

Google C++ Style Guide

·

看了下二楼的代码,感觉你复杂化了,这个很简单:

  • 如果数组 a,b 已经排好序了,直接 copy a 到 c 里面,然后 b 里面元素做个循环比较插入就可以了
  • 如果数组 a,b 乱序,直接先合并,再用通用的排序算法(冒泡排序,快排等)排一下就好了

你的 uparr 函数好像有语法错误,建议用 CLion 这个 IDE,jetbrain 家的,很不错