网站首页 > java教程 正文
问题: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-05-11 全局数组的结构分析(全局数组和局部数组)
- 2025-05-11 10秒合并800个表,VSTACK就是这么厉害!
- 2025-05-11 VBA实现将批量Excel文件中的工作表合并成一个工作表
- 2025-05-11 C语言之strcat字符串拼接函数(c语言字符串拼接函数实现)
- 2025-05-11 这几个动态数组函数,简单又高效(动态数组的方法)
- 2025-05-11 数据格式的转换方法,HSTACK函数重建数组
- 2025-05-11 Java归并排序算法(技术每天进步一点)
- 2025-05-11 如何零基础学习VBA——数组函数介绍
- 2025-05-11 新增工作表数据自动汇总到总表怎么弄?会用vstack函数轻松搞定!
- 2025-05-11 字符拆分与合并,学会套路很简单(字符怎么合并)
你 发表评论:
欢迎- 05-11全局数组的结构分析(全局数组和局部数组)
- 05-1110秒合并800个表,VSTACK就是这么厉害!
- 05-11VBA实现将批量Excel文件中的工作表合并成一个工作表
- 05-11C语言之strcat字符串拼接函数(c语言字符串拼接函数实现)
- 05-11这几个动态数组函数,简单又高效(动态数组的方法)
- 05-11数据格式的转换方法,HSTACK函数重建数组
- 05-11Java归并排序算法(技术每天进步一点)
- 05-11如何零基础学习VBA——数组函数介绍
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)