题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。如果有多对数字的和等于输入的数字,输出任意一对即可。 C语言做
时间: 2024-05-13 10:15:06 浏览: 13
以下是C语言的代码实现:
```c
#include <stdio.h>
void findSum(int arr[], int n, int sum) {
int i = 0; // 左指针
int j = n - 1; // 右指针
while (i < j) {
int curSum = arr[i] + arr[j];
if (curSum == sum) {
printf("找到一对数: %d 和 %d\n", arr[i], arr[j]);
return; // 找到一组就退出
} else if (curSum < sum) { // 当前和小于sum,左指针右移
i++;
} else { // 当前和大于sum,右指针左移
j--;
}
}
printf("没有找到符合条件的数对\n"); // 找不到就输出没有找到
}
int main() {
int arr[] = {1, 2, 4, 7, 11, 15};
int sum = 15;
int n = sizeof(arr) / sizeof(arr[0]);
findSum(arr, n, sum);
return 0;
}
```
输出结果为:
```
找到一对数: 4 和 11
```
相关问题
题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。如果有多对数字的和等于输入的数字,输出任意一对即可。
算法思路:
1. 使用双指针法,定义两个指针 i 和 j 分别初始化为数组的第一个元素和最后一个元素。
2. 如果 nums[i] + nums[j] < target,则 i 右移一位,使得和更大。
3. 如果 nums[i] + nums[j] > target,则 j 左移一位,使得和更小。
4. 如果 nums[i] + nums[j] == target,则找到了符合条件的两个数,直接返回它们的下标。
代码实现如下:
本题目要求运用二分查找法在数组R(已升序排序)中查找k值,输出其位置pos(即数组下标,从0开始),如果找不到,则输出-1。
好的,我明白了。针对您的问题,我可以给出以下代码实现:
```python
def binary_search(R, k):
left = 0
right = len(R) - 1
while left <= right:
mid = (left + right) // 2
if R[mid] == k:
return mid
elif R[mid] < k:
left = mid + 1
else:
right = mid - 1
return -1
```
这个函数接受两个参数,一个已经按照升序排好序的数组R,和需要查找的元素k。它会记录数组的左右两个端点,并通过二分查找的方式逐步缩小搜索范围,最终返回查找到的元素在数组中的下标pos,或者-1表示没有找到。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)