求一个数组中的和为任意一个数的两个元素
//way(1) 时间复杂度为o(N^2);
void Find_Sum(int *arr, int size, int sum)
{
for (int i = 0; i < size; i++)
{
for (int j = i+1; j < size; j++)
{
if (arr[i] + arr[j] == sum)
{
cout << arr[i] << " " << arr[j] << endl;
break;
}
}
}
}
//way(2) 时间复杂度为log2N(类似二分查找)
void Find_Sum(int *arr, int size, int sum)
{
int j = size - 1;
for (int i = 0, j = size - 1; i < j;)
{
if (arr[i] + arr[j] == sum)
{
cout << arr[i] << " " << arr[j] << endl;
i++;
j--;
}
if (arr[i] + arr[j] < sum)
i++;
if ((arr[i] + arr[j] > sum))
j--;
}
}
int main()
{
int arry[] = { 2,5,3,4,8,6,7,5,9};
Find_Sum(arry, sizeof(arry)/sizeof(arry[0]), 10);
system("pause");
return 0;
}
求一个数组中的和为任意一个数的两个元素
最新推荐文章于 2023-12-10 14:55:08 发布