实现折半查找的算法(数据结构)
2017-12-07 14:25
246 查看
输出顺序表(1,2,3,4,5,6,7,8,9,10)中采用折半查找的方法查找关键字9的过程
#include <stdio.h> #define MAXL 100 //定义表中最多记录个数 typedef int KeyType; typedef char InfoType[10]; typedef struct { KeyType key; //KeyType为关键字的数据类型 InfoType data; //其他数据 } NodeType; typedef NodeType SeqList[MAXL]; //顺序表类型 int BinSearch(SeqList R,int n,KeyType k) //二分查找算法 { int low=0,high=n-1,mid,count=0; while (low<=high) { mid=(low+high)/2; printf(" 第%d次比较:在[%d,%d]中比较元素R[%d]:%d\n",++count,low,high,mid,R[mid].key); if (R[mid].key==k) //查找成功返回 return mid; if (R[mid].key>k) //继续在R[low..mid-1]中查找 high=mid-1; else low=mid+1; //继续在R[mid+1..high]中查找 } return -1; } int main() { SeqList R; KeyType k=9; int a[]={1,2,3,4,5,6,7,8,9,10},i,n=10; for (i=0;i<n;i++) //建立顺序表 R[i].key=a[i]; printf("关键字序列:"); for (i=0;i<n;i++) printf("%d ",R[i].key); printf("\n"); printf("查找%d的比较过程如下:\n",k); if ((i=BinSearch(R,n,k))!=-1) printf("元素%d的位置是%d\n",k,i); else printf("元素%d不在表中\n",k); }
相关文章推荐
- Python实现各类数据结构和算法---折半查找
- 算法与数据结构-单向链表的基本操作C语言实现
- C++类模板 实现队列的链式存储结构算法 《数据结构》(北京科海) 部分代码摘抄,自己编写运行
- 数据结构与算法之模拟算法 C++实现
- 算法与数据结构基础 -- 排序 (C++实现)
- 面试复习-------算法与数据结构------实现库函数
- 一步步学习数据结构和算法之快速排序效率分析及java实现
- 一步步学习数据结构和算法之希尔排序效率分析及java实现
- 实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据结构。 (即只使用基本的数据结构)
- 数据结构 P20 算法实现 —A=AUB和归并排序
- 数据结构 P62-62 算法实现 单链队列的创建及基本操作
- 数据结构 P64-65 算法实现 循环队列的创建和基本操作
- 【算法数据结构Java实现】时间复杂度为O(n)的最大和序列
- 数据结构和算法分析java--优先队列(堆实现)
- 算法和数据结构-选择排序、插入排序及希尔排序 java实现
- 数据结构 P22-24 算法实现 线性表的插入与删除
- 【算法和数据结构】二叉树的定义和封装(C++实现)
- C++类模板 实现双向循环链表的基本算法 《数据结构》(C++版 北京科海)中摘抄
- 算法与数据结构 其二 数组和链表 的实现
- 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)