1. 程式人生 > >題目:寫程式碼可以在整型有序陣列中查詢想要的數字, 找到了返回下標

題目:寫程式碼可以在整型有序陣列中查詢想要的數字, 找到了返回下標

程式碼:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//2.寫程式碼可以在整型有序陣列中查詢想要的數字, 找到了返回下標,找不到返回 - 1.(折半查詢)
//定義一個整形有序陣列a[],設定左端點值和右端點值,兩者求平均為中間值。比較中間值和所找值大小
//比較中間值和所找值大小,若找到則返回中間值下標,若找不到則根據大小重新確立端點值。

int main() {
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int key = 0;
	int mid = 0;
	printf
("請輸入一個數[1,10]:"); scanf("%d", &key); int lift = 0; int right = sizeof(arr) / sizeof(arr[0]) - 1; while (lift <= right) { mid = (lift + right) / 2; if (arr[mid]>key) { right = mid - 1; } else if (arr[mid] < key) { lift = mid + 1; } else { break; } } if (lift <=right)
{ printf("找到了!下標是%d", mid); } else { printf("找不到!"); } return 0; }

執行結果:
在這裡插入圖片描述