a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

c語言合并兩個已排序數(shù)組的示例(c語言數(shù)組排序)

2020-01-26 15:34:14
字體:
供稿:網(wǎng)友

問題:將兩個已排序數(shù)組合并成一個排序數(shù)組

這里先不考慮大數(shù)據(jù)量的情況(在數(shù)據(jù)量很大時不知大家有什么好的思路或方法?),只做簡單數(shù)組的處理。

簡單代碼如下:

說明:之所以把merge函數(shù)定義成返回數(shù)組長度,是因為后續(xù)會有重復(fù)數(shù)據(jù)合并功能的merge版本,考慮到接口一致性。

復(fù)制代碼 代碼如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int merge(int* ar1, int len1, int* ar2, int len2, int** rtn)
/*++
 DeScription:
    This routine merge two sorted arrays into one sorted array,
    the same values in different arrays will be keeped.

Arguments:
    ar1 - The first sorted array to be merged
    len1 - The num of items in ar1
    ar2 - The second sorted array to be merged
    len2 - The num of items in ar2
    rtn - The caller proviced pointer to get the result array,
        memory allocated for rtn should be free by the caller.

Return Value:
    The num of items in the merge array
--*/
{
    int i=0,j=0,k=0;
    int m=0;
    int* res = NULL;

    if (ar1 == NULL || ar2 == NULL || rtn == NULL) {
        return 0;
    }

    *rtn = (int *)malloc((len1+len2)*sizeof(int));
    if(*rtn == NULL) {
        return 0;
    }
    memset(*rtn, 0, (len1+len2)*sizeof(int));
    res = (int*)*rtn;

    while(i<len1 && j<len2) {
        if (ar1[i]<=ar2[j]) {
            res[k++] = ar1[i++];
        } else {
            res[k++] = ar2[j++];
        }
    }

    while(i<len1) {
        res[k++] = ar1[i++];
    }
    while(j<len2) {
        res[k++] = ar2[j++];
    }

    return  len1+len2;
}

int merge_test()
{
    int a1[] = {0,1,2,5,8,19,34,43,52};
    int a2[] = {1,4,5,12,17,33,42,51,53,65,76};
    int len1 = sizeof(a1)/sizeof(int);
    int len2 = sizeof(a2)/sizeof(int);
    int i = 0, len = 0;
    int* a3 = NULL;
    int* ptr = NULL;

    len = merge(a1, len1, a2, len2, &a3);
    if (a3 == NULL) {
        printf("a3==NULL/n");
        return 1;
    }

    ptr = a3;
    while(i<len) {
        printf("a3[%3d]---->%8d/n", i++, *ptr++);   
    }

    if (a3 != NULL) {
        free(a3);
    }

    return 0;
}

int main(int argc, char* argv[])
{
    merge_test();

    return 0;
}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 国产精品久久久久免费a∨ 国产激情一区二区三区 | 精品国产一区二区三区久久久久久 | 狠狠操操| 欧美激情三级 | 久久99精品久久久久久园产越南 | a在线观看| 色婷婷综合久久久久中文一区二区 | 国产精品18久久久久久首页狼 | 日本男人的天堂 | 国产成人精品白浆久久69 | 四虎视频在线精品免费网址 | 美女久久一区 | 国产成人8x视频一区二区 | 精品一区二区三区免费 | 国产福利91精品一区二区三区 | 久久人人网 | 久久综合99re88久久爱 | 在线免费观看av片 | 九九热最新视频 | 欧美午夜视频 | 中文字幕亚洲第一 | 91精品国产精品 | 欧美成人性生活视频 | 亚洲电影在线观看 | 亚洲一区国产二区 | 国产成人精品无人区一区 | 精品国产一区二区三区在线观看 | 免费视频一区 | 丝袜+亚洲+另类+欧美+变态 | 四虎成人在线播放 | 国产精品人成在线播放 | 一级成人免费 | 国产亚洲欧美在线 | 亚洲欧美日韩另类精品一区二区三区 | 99国产精品99久久久久久 | 久久精美视频 | 午夜影晥 | 高清在线一区二区 | 中文字幕免费在线观看 | 欧美精品成人 | 综合网视频 |