您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言将两个整数数组合并为一个数组并重新排序

时间:01-03来源:作者:点击数:

下面给定两个排序号的整数数组,将他们合并为一个数组并重新排序。

#include <stdio.h>
#define NMAX 10
void printIntArray(int a[], int n);
void merge(int c[], int *nc, int a[], int na, int b[], int nb);
int main(void) {
    int x[NMAX] = {1,3,5,6,7};  // 第一个排序好的数组
    int y[NMAX] = {2,3,4};  // 第二个排序好的数组
    int z[NMAX+NMAX];  // 合并后的数组
    int nz;
    merge(z,&nz,x,5,y,3);
    printIntArray(z,nz);
}
// n 为数组 a 的元素个数;这些元素将被打印输出,5 个一行
void printIntArray(int a[], int n)
{
    int i;
    for (i=0; i<n; ){
        printf("\t%d ", a[i++]);
        if (i%5==0)
            printf("\n");
    }
    printf("\n");
}
// a b 为排序好的数组,合并后保存到 c;函数返回数组 nc 的元素个数
void merge(int c[], int *nc, int a[], int na, int b[], int nb){
    int cursora, cursorb, cursorc;
    cursora=cursorb=cursorc=0;
    while((cursora<na)&&(cursorb<nb))
        if (a[cursora]<=b[cursorb])
            c[cursorc++]=a[cursora++];
        else
            c[cursorc++]=b[cursorb++];
    while(cursora<na)
        c[cursorc++]=a[cursora++];
    while(cursorb<nb)
        c[cursorc++]=b[cursorb++];
    *nc = cursorc;
}

输出结果:

    1    2    3    3    4
    5    6    7
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门