如何使用指针合并 2 个数组
How to merge 2 arrays using pointers?
我正在制作一个程序来合并和排序 2 个数组。我正在使用函数"合并"来执行此操作。算法必须是内联的 - 操作计数应与 dima + dimb 成正比。我不能使用辅助程序数组。如何在不使用外部库的情况下做到这一点 - 我怀疑我可以使用指针来制作这些库?
int a[] = {1,4,4,5,8};
int b[] = {1,2,2,4,6,6,9};
constexpr size_t dima = (sizeof(a)/sizeof(*a));
constexpr size_t dimb = (sizeof(b)/sizeof(*b));
constexpr size_t dimc = dima + dimb;
int c[dimc];
merge(a,dima,b,dimb,c);
void merge(const int* a, size_t dima, const int* b, size_t dimb, int*
c){}
int a[] = {1,4,4,5,8};
int b[] = {1,2,2,4,6,6,9};
constexpr size_t dima = (sizeof(a)/sizeof(*a));
constexpr size_t dimb = (sizeof(b)/sizeof(*b));
constexpr size_t dimc = dima + dimb;
int* c = new int[dimc];
merge(a,dima,b,dimb,c);
void merge(const int* a, size_t dima, const int* b, size_t dimb, int*
c){
int a_t=0;
int b_t=0;
int insert_a=0,insert_b=0;
for(int i=0; i<dima+dimb;i++)
{
insert_a=0;
insert_b=0;
if(a_t < dima)
{
if(b_t < dimb)
{
if(a[a_t] < b[b_t])
{
insert_a=1;
}
else
{
insert_b=1;
}
}
else
{
insert_a=1;
}
}
else
{
insert_b=1;
}
if(insert_a)
{
c[i] = a[a_t++];
}
else if(insert_b)
{
c[i] = b[b_t++];
}
}
}
它应该有效,这就是你的意思?
void merge(const int* a, size_t dima, const int* b, size_t dimb, int* c){
int i = 0, j = 0, k = 0;
while(i < dima && j < dimb){
if(*(a + i) <= *(b + j))
*(c + k++)=*(a + i++);
else *(c + k++)=*(b + j++);
}
while(i < dima)
*(c + k++)=*(a + i++);
while(j < dimb)
*(c + k++)=*(b + j++);
}
实时代码
相关文章:
- 合并排序不排序自创建数组类 c++
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- 我如何根据 c++ 中的行合并两个 2D 数组
- 使用基于数组的列表 c++ 合并 2 个数组
- 如何在 char 数组中合并两个数组以通过网络发送
- 合并数组的程序打印 0 而不是实际合并的数组
- 如果数组长度为 100000,则使用合并排序对反转进行计数会给出负数
- 合并两个数组后数组大小不正确
- 如何修复合并两个C++数组时'Invalid Pointer'
- 在OpenMP上的并行合并排序上的数组大小问题.如何将合并分类分类为更多任务
- C++全局常量数组:是否保证合并(优化)到一个副本中
- C - 为什么合并函数在递归调用后会逆转数组
- 合并排序 - 返回新数组,而不是将合并的数组复制到输入数组
- C MPI:STD ::在数组上合并
- 合并排序问题,在方法之间传递数组
- C 合并的数组输出错误
- 我如何在INT数组上实现合并排序
- C++将2个已排序的数组合并为1个已排序数组
- 将排序代码与数组合并,陷入合并,只需要一点点修正
- 将字符* 数组合并到uint16_t