输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。C语言
时间: 2024-05-11 16:15:16 浏览: 72
可以使用双指针的方法来解决这个问题,设置一个指向数组起点的指针left和一个指向数组终点的指针right。如果left和right指向所指元素的和小于输入的目标数字,则将left向右移动一位;如果和大于目标数字,则将right向左移动一位;否则,返回left和right所指元素的下标即可。
以下是C语言代码实现:
```c
#include <stdio.h>
void findSum(int arr[], int target, int length) {
int left = 0, right = length - 1;
while (left < right) {
if (arr[left] + arr[right] == target) {
printf("找到了两个数,它们的下标分别为 %d 和 %d \n", left, right);
return;
} else if (arr[left] + arr[right] < target) {
left++;
} else {
right--;
}
}
printf("没有找到符合要求的数对!\n");
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int target = 10;
int length = sizeof(arr) / sizeof(int);
findSum(arr, target, length);
return 0;
}
```
输出结果为:
```
找到了两个数,它们的下标分别为 0 和 8
```
阅读全文