gpt4 book ai didi

c++ - 如何使用指针合并 2 个数组?

转载 作者:行者123 更新时间:2023-11-28 01:38:28 27 4
gpt4 key购买 nike

我正在编写一个程序来合并和排序 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++];
}
}
}

应该可以,这就是你的意思?

关于c++ - 如何使用指针合并 2 个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48335243/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com