转贴:数据结构:二分查找
2009-12-29 13:17
253 查看
1.二分查找又称为折半查找,它要求要查找的顺序表必须是有序表,即表中结点按关键
字有序,并且要用顺序存储结构。
基本思想是:首先将给定值key与表中中间位置记录的关键字相比较,若二者相等,则
查找成功,否则根据比较的结果确定下次查找的范围是在中间记录的前半部分还是后半部
分,然后在新的查找范围内进行同样的查找,如此重复下去,直到在表中找到关键字与给定
值相等的记录,或者确定表中没有这样的记录。
编写程序构造一个有序表La,从键盘接收一个关键字key,用二分查找法在La 中查找
key,若找到则提示查找成功并输出key所在的位置,否则提示没有找到信息。
字有序,并且要用顺序存储结构。
基本思想是:首先将给定值key与表中中间位置记录的关键字相比较,若二者相等,则
查找成功,否则根据比较的结果确定下次查找的范围是在中间记录的前半部分还是后半部
分,然后在新的查找范围内进行同样的查找,如此重复下去,直到在表中找到关键字与给定
值相等的记录,或者确定表中没有这样的记录。
编写程序构造一个有序表La,从键盘接收一个关键字key,用二分查找法在La 中查找
key,若找到则提示查找成功并输出key所在的位置,否则提示没有找到信息。
//二分查找 #include <stdio.h> #include <stdlib.h> typedef int Status; typedef int KeyType; typedef int ElemType; typedef struct { ElemType *elem; int length; } SSTable; int Search_Bin ( SSTable ST, KeyType key ) { // 在有序表ST中折半查找其关键字等于key的数据元素。 // 若找到,则函数值为该元素在表中的位置,否则为0。 int low, high, mid; low = 1; high = ST.length; while (low <= high) { mid = (low + high) / 2; if (key == ST.elem[mid]) return mid; // 找到待查元素 else if (key < ST.elem[mid]) high = mid - 1; else low = mid + 1; } return 0; } int main() { SSTable ST; ST.elem = (ElemType *)malloc(100 * sizeof(ElemType)); int i = 0; for (i = 0;i < 100;i++) ST.elem[i] = i * 2; ST.length = 100; KeyType key; printf("请输入一个key进行查找:"); scanf("%d", &key); getchar(); i = Search_Bin(ST, key); if (i) printf("位置:%d", i); else printf("没找到!"); getchar(); }
相关文章推荐
- 数据结构图文解析之:二分查找及与其相关的几个问题解析
- java中的数据结构--二分查找
- python数据结构与算法28 二分查找
- Python编写数据结构中的二分查找
- 【数据结构机试复习9】 二维数组中的查找 & 二分查找 & 寻找字符串
- 数据结构和算法————二分查找
- 数据结构和算法设计专题之---二分查找(Java版)
- 数据结构(二分查找)
- 数据结构与算法,二分查找
- 数据结构--加入二分查找的插入排序(优化)
- 数据结构10:二分查找的递归与非递归表示与实现
- 数据结构--二分查找(C++版)
- 数据结构--杂记-二分查找
- 数据结构 学习笔记(四):树(上):树的表示,二分查找,二叉树,先中后层次遍历
- 转贴:数据结构:Hash查找
- 数据结构--向量--二分查找
- 数据结构——二分查找【转】
- c语言数据结构分析7之 二分查找
- 数据结构 30 查找 二分查找
- Go 数据结构--二分查找树