C语言查找算法

来源:互联网 发布:三维产品动画演示软件 编辑:程序博客网 时间:2024/05/14 02:01

1、折半查找

思想:假设表中元素按照升序排列,将表中间位置元素与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置元素将表分为前后两个子表,如果中间元素大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表,直到找到查找关键字即为查找成功。
优点:比较次数少,查找速度快,平均性能好;
缺点:必须为有序表,插入删除困难;

适用于不经常变动而查找频繁的有序列表。

代码:

#include <stdio.h> int bisearch(int target, int array[], int len) {     int low = 0;     int high = len - 1;     int mid;     while (low <= high)     {         mid = (low + high) / 2;         if (array[mid] == target)         {             return mid;         }else if (array[mid] < target)         {                          low = mid + 1;         }else if (array[mid] > target)         {             high = mid - 1;         }     }     return -1; } int main() {     int array[10] = {2, 3, 4, 6, 8, 10, 11, 32};     int location = bisearch(8, array, 8);     if (location > -1)     {         printf("the location is %d\n", location);     }     else     {         printf("can't find the target\n");     }     return 0; }
原创粉丝点击