标签:strong end 合并 .com 获取 实现 name ace mes
1、计算两个数组有效值合并后有效长度。
2、设置三个指针,(p,q,k),一个指向A1已初始化末尾,A2以初始化末尾, A1 + len(A2)末尾
3、比较p和q所指向的元素的大小,并将较大值赋值给k指针所指向的内容。
4、考虑当某个数组指向首地址时,另一个数组仍然存在多个数组没有进行比较的情况。
#include <iostream>
using namespace std;
void test()
{
int A1[20] = {1,3,5,6,7,8,12,17,19,20};
int A2[5] = {-1,-3,5,6,19};
/*
E1. 获取A2的长度
E2. 定义三个指针(p,q,k),一个指向A1已初始化末尾,A2以初始化末尾, A1 + len(A2)末尾
*/
int *p = A1 + 9; // p 指向A1有效初始化的最后一个元素
int *q = A2 + 4; // q 指向A2有效初始化的最后一个元素
int *k = A1 + 14; // k 指向两个数组合并后,A1有效值的最后一个元素
// 当A1指针p 或A2指针q指向首地址时之前(包含首地址元素的比较),进行较最大元素赋值
while(p >= A1 && q >= A2){
if(*p >= *q){
*k-- = *p;
// 避免指针溢出
if(p != A1){
p--;
}else
{
break;
}
}else{
*k-- = *q;
// 避免指针溢出
if(q != A2){
q--;
}else
{
break;
}
}
}
// 剩余元素进行替换(考虑当某个数组指向首地址时,另一个数组仍然存在多个数组没有进行比较的情况。
)
while(q >= A2){
*k-- = *q;
if(q != A2){
q--;
}else
{
break;
}
}
// 打印数组A1
for(auto i : A1){
cout << i << ' ';
}
cout << endl;
}
int main()
{
test();
return 0;
}
标签:strong end 合并 .com 获取 实现 name ace mes
原文地址:https://www.cnblogs.com/komean/p/10622496.html