网站首页 > 技术文章 正文
问题:array1,array2为两个有序的升序数组,将array1和array2合并为一个升序有序数组
1.合并两个有序数组array1,array2,借助数组array3。从头开始,将array1的第一个元素和array2的第一个元素比较,小的放到array3中。
#include<stdio.h>
#define MAX 15
//合并两个有序数组a,b,借助数组c
void MergeArray(int array1[], int len1, int array2[], int len2, int array3[], int len3)
{
if (len3 < len1 + len2)
return;
int index1 = 0, index2 = 0, index3 = 0;
while (index1 < len1&&index2 < len2)
{
if (array1[index1] < array2[index2])
{
array3[index3++] = array1[index1++];
}
else
{
array3[index3++] = array2[index2++];
}
}
while (index1 < len1)
{
array3[index3++] = array1[index1++];
}
while (index2 < len2)
{
array3[index3++] = array2[index2++];
}
return;
}
int main()
{
int array1[] = { 1,3,5,7,9 };
int array2[] = { 2,4,6,8,9 };
int len1 = sizeof(array1) / sizeof(int);
int len2 = sizeof(array2) / sizeof(int);
int array3[MAX];
MergeArray(array1, len1, array2, len2, array3, MAX);
for (int i = 0; i < len1 + len2; i++)
{
printf("%d ", array3[i]);
}
}
2.假设array1足够大,能够放下array1和array2,从后往前比较array1,和array2,大的元素放到最右边。
#include<stdio.h>
#define MAX 15
//合并两个有序数组array1,array2,从后往前比较,将array1和array2最后一个元素比较,大的放到len1+len2-1
void MergeArray(int array1[], int len1, int array2[], int len2)
{
int index1 = len1 - 1;
int index2 = len2 - 1;
int index = len1 + len2 - 1;
while (index1 >= 0&&index2 >= 0)
{
if (array1[index1] > array2[index2])
{
array1[index--] = array1[index1--];
}
else
{
array1[index--] = array2[index2--];
}
}
while (index1 >= 0)
{
array1[index--] = array1[index1--];
}
while (index2 >= 0)
{
array1[index--] = array2[index2--];
}
return;
}
int main()
{
int array1[MAX] = {1,3,5,7,9,10 };
int array2[] = { 2,4,6,8,9 };
int len2 = sizeof(array2) / sizeof(int);
MergeArray(array1, 6, array2, len2);
for (int i = 0; i < 6 + len2; i++)
{
printf("%d ", array1[i]);
}
}
猜你喜欢
- 2025-06-25 C语言入门到精通第027讲-C语言传递数组给函数
- 2025-06-25 「C语言」指针进阶第三站,数组指针
- 2025-06-25 C语言基础知识:指针和数组的区别是什么?
- 2025-06-25 C语言100题集合023-输入月份号并输出英文月份名
- 2025-06-25 C语言字符数组和字符串
- 2025-06-25 C语言100题集合027-二维数组的经典案例,非常重要
- 2025-06-25 C语言中的一维数组理解
- 2025-06-25 Excel三种方法多条件筛选,你都用过吗?
- 2025-06-25 C语言-数组平均值与排序
- 2025-06-25 C语言进阶教程:指针数组与数组指针
- 06-25C语言入门到精通第027讲-C语言传递数组给函数
- 06-25「C语言」指针进阶第三站,数组指针
- 06-25C语言基础知识:指针和数组的区别是什么?
- 06-25合并两个数组
- 06-25C语言100题集合023-输入月份号并输出英文月份名
- 06-25C语言字符数组和字符串
- 06-25C语言100题集合027-二维数组的经典案例,非常重要
- 06-25C语言中的一维数组理解
- 最近发表
- 标签列表
-
- axure 注册码 (25)
- exploit db (21)
- mutex_lock (30)
- oracleclient (27)
- think in java (14)
- javascript权威指南 (19)
- nfs (25)
- componentart (17)
- yii框架 (14)
- springbatch (28)
- oracle数据库备份 (25)
- iptables (21)
- 自动化单元测试 (18)
- dir (26)
- connectionstring属性尚未初始化 (23)
- output (32)
- panel滚动条 (28)
- centos 5 4 (23)
- sql学习 (33)
- http error 503 (21)
- pop3服务器 (18)
- 图表组件 (17)
- android退出应用 (21)
- 图片透明度 (20)
- c 数组 (33)