标签:nta res png contains 实验 alt 数据 相同 指针
本实验主要用二分法来查找两个数组中不同的元素
#include<iostream> using namespace std; int* GetAllNotIncluded(int A[], int a_length, int B[], int b_length); int main() { int arr1[6] = { 1,2,3,4,5,6, }; int arr2[3] = { 8, 9, 1 }; int *arr3; arr3 = GetAllNotIncluded(arr1, 6, arr2, 3); for (int i = 0; i<sizeof(arr2)/sizeof(int); i++) cout << arr3[i]<<‘ ‘; cin.get(); //暂停窗口,没有其他意义 return 0; } int* GetAllNotIncluded(int A[],int a_length, int B[],int b_length) { //二分法查找不同的数据 int k = 0; int *res = new int[]; //声明一个数据指针 for (int i = 0; i < b_length; i++) { int l = 0; int r = a_length - 1; bool contains = false; while (l <= r) { int mid = l + ((r - l) >> 1); if (A[mid] == B[i]) { contains = true; break; } if (A[mid] > B[i]) { r = mid - 1; } else { l = mid + 1; } } if (!contains) { //存储不相同的数据 res[k] = B[i]; k += 1; } } return res; }
本实验有两个不足:
第一没法知道返回的指针数组的大小,导致用了
这样的表述
第二在子函数中不能用
sizeof(A)/sizeof(int)
来求数组的长度
例如:
int* GetAllNotIncluded(int A[], int B[]) { //二分法查找不同的数据 int k = 0; int *res = new int[]; //声明一个数据指针 for (int i = 0; i < sizeof(B)/sizeof(int); i++) { int l = 0; int r = sizeof(A)/sizeof(int)- 1; bool contains = false; while (l <= r) { int mid = l + ((r - l) >> 1); if (A[mid] == B[i]) { contains = true; break; } if (A[mid] > B[i]) { r = mid - 1; } else { l = mid + 1; } } if (!contains) { //存储不相同的数据 res[k] = B[i]; k += 1; } } return res; }
这样写得出来的A的长度只有1.
欢迎大神赐教,O(∩_∩)O谢谢。
标签:nta res png contains 实验 alt 数据 相同 指针
原文地址:http://www.cnblogs.com/panlangen/p/7857591.html