用折半查找法找到数组中的一个数

用折半查找法找到数组中的一个数

#include<stdio.h>
int  main(){
	int arr[] = { 2, 2, 3, 5, 6, 5, 6, 1, 8, 9, 7 };
	int left = 0;
	int right = sizeof(arr) / sizeof(arr[0]) - 1;
	int key = 8;
	int mid = 0;
	while (left <= right){
		mid = (right + left) / 2;
		if (arr[mid] > key){
			right = mid - 1;
		}

		else if (arr[mid] < key){
			left = mid + 1;
		}
		else
			break;
	}
	if (left <= right)
		printf("找到了,下标为%d\n", mid);
	
	else{
		printf("没找到\n");
	}
	system("pause");
	return 0;
	}



好的!以下是一个使用折半查找数组中查找指定的代码示例: ```c #include <stdio.h> int binarySearch(int arr[], int size, int target) { int left = 0; int right = size - 1; while (left <= right) { int mid = left + (right - left) / 2; if (arr[mid] == target) { return mid; // 找到目标返回索引 } else if (arr[mid] < target) { left = mid + 1; // 目标在右半部分,更新左边界 } else { right = mid - 1; // 目标在左半部分,更新右边界 } } return -1; // 数组中不存在目标 } int main() { int arr[5]; int target; printf("请输入组元素(共5个): "); for (int i = 0; i < 5; i++) { scanf("%d", &arr[i]); } // 对组进行排序(可以使用任何排序算) for (int i = 0; i < 5 - 1; i++) { for (int j = 0; j < 5 - i - 1; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } printf("请输入要查找的: "); scanf("%d", &target); int result = binarySearch(arr, 5, target); if (result == -1) { printf("无此\n"); } else { printf("该数数组中第%d个元素的值\n", result + 1); } return 0; } ``` 在这段代码,我们首先定义了一个 `binarySearch` 函,用于实现折半查找。然后,在 `main` 函,我们首先获取用户输入的组元素,并对组进行排序(这里使用了冒泡排序算,你也可以使用其他排序算)。接下来,我们获取用户输入的目标,并调用 `binarySearch` 函进行查找。最后,根据查找结果输出相应的信息。 注意:这里假设用户输入的组元素已经按照从小到大的顺序排列。 希望对你有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值