#include <stdio.h> /** * 使用折半查找,来查找一个数 * * @param arr 数组 * @param len 数组的长度 * @param key 要查找的数 * * @return 要查找的数的位置,如果查找不到返回 -1 */ int searchItem(int arr[], int len, int key) { // 定义变量 int low = 0, high = len - 1, mid; // 循环 while (low <= high) { // 计算mid的位置 mid = (low + high) / 2; // 判断 key a[mid] if (key > arr[mid]) { // key > a[mid] low = mid + 1 low = mid + 1; }else if (key < arr[mid]){ // key < a[mid] high = mid - 1 high = mid - 1; }else{ // key == a[mid] return mid; } } // 下面是查找不到的情况 return -1; } int main(int argc, const char * argv[]) { int a[10] = {3,4,12,20,21,23,28,45,67,100}; // 查找20 key = 20 int loc = searchItem(a, 10, 20); printf("loc = %d\n", loc); return 0; }
效果图:
时间: 2024-11-03 03:42:40