中国最近军事新闻视频/seo规则
思路:
设两个分别指向两数组的指针,只需比较这两个指针指向得数据,若从小到大排序:小数据的指针+1,并将其放到第三个数组中
问题:一个数组到结尾怎么办?
将另一个数组按顺序全部放入第三个数组
#include <stdio.h>//合并两个有序数组,使之有序void merge_arry(int* arr1,int n1,int* arr2,int n2,int* arr3,int n3)//传递三个数组,前两个为待合并,第三个为合并后
{//思路://设两个分别指向两数组的指针,只需比较这两个指针指向得数据,//若从小到大排序:小数据的指针+1,并将其放到第三个数组中//一个数组到结尾怎么办?//将另一个数组按顺序全部放入第三个数组int i = 0;int j = 0;int k = 0;int flag_i = 0;int flag_j = 0;while (1){if(i>n1-1){flag_i = 1;break;}if(j>n2-1){flag_j = 1;break;}if(*(arr1+i)<*(arr2+j)){*(arr3+k) = *(arr1+i);i++;k++;}else{*(arr3+k) = *(arr2+j);j++;k++;}}if(flag_i == 1)//说明是第一个数组都放入了第三个数组,那么将第二个数组放入第三个数组即可{while (arr2+j<arr2+n2){*(arr3+k) = *(arr2+j);k++;j++;}}else{while (arr1+i<arr1+n1){*(arr3+k) = *(arr2+i);k++;i++;}}
}int main(int argc, char *argv[])
{int arr1[4]={1,3,5,7};int arr2[4]={2,4,6,8};int arr3[8]={0};merge_arry(arr1,4,arr2,4,arr3,8);int i = 0;for(i = 0;i<8;i++){printf("%d\n",arr3[i]);}printf("Hello World!\n");return 0;
}