實驗目的及要求:
本查找實驗旨在使學生深入了解不同查找算法的原理、性能特征和適用場景,培養其在實際問題中選擇和應用查找算法的能力。通過實驗,學生將具體實現多種查找算法,并通過性能測試驗證其在不同數據集上的表現,進一步提升算法分析與實現的技能。
實驗設備環境:
1.微型計算機
2.DEV C++(或其他編譯軟件)
任務:
折半查找問題。
問題描述:已知 11 個元素的有序數組為(05,13,19,21,37,56,64,75,80,88,92),要求在有序數組中查找關鍵字為 key 的元素是否存在。
基本要求:
(1) 編寫折半查找元素的算法
(2) 編寫一個測試主函數。
[算法設計] 程序首先定義了一個有序數組 arr,然后實現了折半查找算法 binarySearch,最后在測試主函數中輸入要查找的關鍵字并調用折半查找函數。程序輸出查找結果,指明關鍵字是否在數組中以及對應的索引位置。
代碼如下:
#include <stdio.h>
int binarySearch(int arr[], int n, int key) {int low = 0, high = n - 1;while (low <= high) {int mid = low + (high - low) / 2;if (arr[mid] == key)return mid; else if (arr[mid] < key)low = mid + 1; elsehigh = mid - 1;}return -1;
}
int main() {int arr[] = {5, 16, 19, 28, 37, 56, 66, 75, 80, 86, 97};int n = sizeof(arr) / sizeof(arr[0]);int key;printf("請輸入要查找的關鍵字: ");scanf("%d", &key);int result = binarySearch(arr, n, key);if (result != -1)printf("元素 %d 在數組中的索引位置為 %d。\n", key, result);elseprintf("元素 %d 在數組中未找到。\n", key);return 0;
}