本文共 2382 字,大约阅读时间需要 7 分钟。
描述 题目标题: 将两个整型数组按照升序合并,并且过滤掉重复数组元素 详细描述: 接口说明 原型: voidCombineBySort(int* pArray1,intiArray1Num,int* pArray2,intiArray2Num,int* pOutputArray,int* iOutputNum); 输入参数: int* pArray1 :整型数组1 intiArray1Num:数组1元素个数 int* pArray2 :整型数组2 intiArray2Num:数组2元素个数 输出参数(指针指向的内存区域保证有效): int* pOutputArray:合并后的数组 int* iOutputNum:合并后数组元素个数 返回值: void | |
知识点 | 排序,数组 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 输入说明,按下列顺序输入: 1 输入第一个数组的个数 2 输入第一个数组的数值 3 输入第二个数组的个数 4 输入第二个数组的数值 |
输出 | 输出合并之后的数组 |
样例输入 | 31 2 54-1 0 3 2 |
样例输出 | -101235 |
#includeusing namespace std;void CombineBySort(int* pArray1, int iArray1Num, int* pArray2, int iArray2Num, int* pOutputArray, int* iOutputNum);int main(){ int n, m; int i, j; //int a[100],b[100],c[200]; //int *num; cin >> n; int *a = new int[n]; for(i=0; i > a[i]; } cin >> m; int *b = new int[m]; for(j=0; j > b[j]; } //for(i=0; i pArray1[j+1]) { temp = pArray1[j]; pArray1[j] = pArray1[j+1]; pArray1[j+1] = temp; } } } /* for(i=0; i< iArray1Num; i++) { cout << pArray1[i]; } cout << endl; */ for(i=0; i pArray2[j+1]) { temp = pArray2[j]; pArray2[j] = pArray2[j+1]; pArray2[j+1] = temp; } } } /* for(i=0; i< iArray2Num; i++) { cout << pArray2[i]; } cout << endl; */ for(i=0,j=0,k=0; i+j < iArray1Num+iArray2Num-1; )//合并 { if(pArray1[i] == fOut)//如果当前数值与前一个已确定输出值相同,则跳过 { i++; //continue; } else if(pArray2[j] == fOut)//如果当前数值与前一个已确定输出值相同,则跳过 { j++; //continue; } else// { if(pArray1[i] < pArray2[j])//如果第一个数组的值比第二个数组的值小 { pOutputArray[k++] = pArray1[i];//则把第一个数组的值放入输出数组,并序号加一 i++; } else if(pArray1[i] > pArray2[j] ) { pOutputArray[k++] = pArray2[j]; j++; } else if(pArray1[i] == pArray2[j]) { pOutputArray[k++] = pArray2[j]; i++; j++; } fOut = pOutputArray[k-1];//更新 前一个输出值fOut } if(i == iArray1Num)//如果第一个数组都已经遍历完毕 { for(j; j< iArray2Num; j++)//则把第二个数组的剩余的数字放入输出输入 { if(pArray2[j] == fOut)//判断是否有重值 { j++; continue; } else { pOutputArray[k++] = pArray2[j]; fOut = pOutputArray[k-1]; } } break; } else if(j == iArray2Num)//同理,如果第二个数组都已经遍历完毕 { for(i; i< iArray1Num; i++) { if(pArray1[i] == fOut) { i++; continue; } else { pOutputArray[k++] = pArray1[i]; fOut = pOutputArray[k-1]; } } break; } } *iOutputNum = k;//输出数组的大小}
转载地址:http://bvnii.baihongyu.com/