有序表查找——折半查找

xiaoxiao2021-02-28  137

折半查找也称(二分查找)

大话数据结构298

前提:线性表中的记录必须是关键码有序(通常从小到大),线性表必须采用顺序存储。

思想:取中间记录作为比较对象 , 若给定值与中间记录的关键字相等,则成功;若小于,则在中间记录的左半区继续查找;若大于,在右半区查找。不断重复,直到成功,若无记录,查找失败。

//数组下标从1-n开始存 #include<stdio.h> #include<iostream> using namespace std; int Binary_Search(int *a, int n, int key) { int low, high, mid; low = 1; high = n; while (low <= high) { mid = (low + high) / 2; if (key < a[mid]) { high = mid - 1; } else if (key > a[mid]) { low = mid + 1; } else return mid; } } int main() { int a[11] = { 0, 1, 16, 24, 35, 47, 59, 62, 73, 88, 99 }; int s = 62; int x = Binary_Search(a, 11, s); cout << x << endl; getchar(); }

转载请注明原文地址: https://www.6miu.com/read-96462.html

最新回复(0)