将两个有序数组归并成一个有序数组

来源:互联网 发布:正确的爱情观知乎 编辑:程序博客网 时间:2024/05/19 15:23
#include<stdio.h>//归并函数的声明void merge(int arr1[], int arr2[], int arr_result[]);int result_number = 0;int arr1_count, arr2_count;int main(){    int arr1[10000] = { 0 };    int arr2[10000] = { 0 };    int arr_result[20000] = { 0 };    //输入数组1    printf("Input the count of arr1's numbers:");    scanf("%d", &arr1_count);    printf("Input %d numbers for arr1:",arr1_count);    for (int i = 0; i < arr1_count; i++)        scanf("%d", &arr1[i]);    //输入数组2    printf("Input the count of arr2's numbers:");    scanf("%d", &arr2_count);    printf("Input %d numbers for arr2:", arr2_count);    for (int i = 0; i < arr2_count; i++)        scanf("%d", &arr2[i]);    //回显数组1    printf("Now,arr1 have %d numbers,there are:", arr1_count);    for (int i = 0; i < arr1_count; i++)    {        printf(" %d,", arr1[i]);    }    printf("\n");    //回显数组2    printf("Now,arr2 have %d numbers,there are:", arr2_count);    for (int i = 0; i < arr2_count; i++)    {        printf(" %d,", arr2[i]);    }    printf("\n");    //进行归并操作    merge(arr1,arr2,arr_result);    //输出归并后的数组    printf("The size of arr_result[] is %d.\n There are:\n", result_number);    for (int i = 0; i < result_number; i++)    {        printf("%d ", arr_result[i]);    }    return 0;}//归并函数的定义void merge(int arr1[],int arr2[],int arr_result[]){    for (int i = 0, j = 0; i <  arr1_count|| j < arr2_count;)     {        if (i >= arr1_count && j < arr2_count)        {            arr_result[result_number++] = arr2[j++];        }        else if (i < arr1_count && j >= arr2_count)        {            arr_result[result_number++] = arr1[i++];        }        else if (arr1[i] < arr2[j])        {            arr_result[result_number++] = arr1[i++];        }        else if (arr1[i] == arr2[j])         {            arr_result[result_number++] = arr1[i++];            j++;        }        else        {            arr_result[result_number++] = arr2[j++];        }    }}
阅读全文
0 0
原创粉丝点击