折半查找
折半查找依赖的是顺序表结构,简单点说就是数组。
• 二分查找针对的是有序数据。
• 数据量太小不适合二分查找。
• 数据量太大也不适合二分查找。
/* 折 半 查 找 */ 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 /* 若 相 等 则 说 明 mid 即 为 查 找 到 的 位 置 */ return mid ; } return 0; }