第十四周——【项目1 - 验证算法】验证折半查找算法
2015-11-30 16:41
274 查看
/*
* Copyright (c) 2015, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp,btree.h,btree.cpp
* 作者:于奎民
* 完成日期:2015年11月5日
* 版本号:code ::Block 12.11
* 问题描述:
认真阅读并验证折半查找算法。请用有序表{12,18,24,35,47,50,62,83,90,115,134}作为测试序列,分别对查找90、47、100进行测试。*/
测试文件:
折半查找
结果:
.
递归的折半查找算法
结果:
* Copyright (c) 2015, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp,btree.h,btree.cpp
* 作者:于奎民
* 完成日期:2015年11月5日
* 版本号:code ::Block 12.11
* 问题描述:
认真阅读并验证折半查找算法。请用有序表{12,18,24,35,47,50,62,83,90,115,134}作为测试序列,分别对查找90、47、100进行测试。*/
测试文件:
折半查找
#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; while (low<=high) { mid=(low+high)/2; if (R[mid].key==k) //查找成功返回 return mid+1; if (R[mid].key>k) //继续在R[low..mid-1]中查找 high=mid-1; else low=mid+1; //继续在R[mid+1..high]中查找 } return 0; } int main() { int i,n=10; int result; SeqList R; KeyType a[]= {1,3,9,12,32,41,45,62,75,77},x=75; for (i=0; i<n; i++) R[i].key=a[i]; result = BinSearch(R,n,x); if(result>0) printf("序列中第 %d 个是 %d\n",result, x); else printf("木有找到!\n"); return 0; }
结果:
.
递归的折半查找算法
#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 BinSearch1(SeqList R,int low,int high,KeyType k) { int mid; if (low<=high) //查找区间存在一个及以上元素 { mid=(low+high)/2; //求中间位置 if (R[mid].key==k) //查找成功返回其逻辑序号mid+1 return mid+1; if (R[mid].key>k) //在R[low..mid-1]中递归查找 BinSearch1(R,low,mid-1,k); else //在R[mid+1..high]中递归查找 BinSearch1(R,mid+1,high,k); } else return 0; } int main() { int i,n=10; int result; SeqList R; KeyType a[]= {1,3,9,12,32,41,45,62,75,77},x=75; for (i=0; i<n; i++) R[i].key=a[i]; result = BinSearch1(R,0,n-1,x); if(result>0) printf("序列中第 %d 个是 %d\n",result, x); else printf("木有找到!\n"); return 0; }
结果:
相关文章推荐
- 第十四周项目1--验证算法(1)
- ubuntu国内源列表
- 第十三周 项目2 分块查找
- 第13周项目5-拓扑排序算法的验证
- Color与drawable
- 第十三周项目1最小生成树的克鲁斯卡尔算法
- 十三周 项目一 运行所讲算法,观察结果并领会算法(拓扑排序)
- Qt中创建场景并将该创景显示在窗口上面实例
- HDU 3124 (二分+扫描线 最近圆对)
- 关于java,tomcat连接mySql数据库
- 【C语言提高09】【指针铁律】铁律3:理解指针必须和内存四区概念相结合
- BroadcastReceiver注册方式
- 【第12周 项目4 - 利用遍历思想求解图问题(1-5)】
- 第十四周项目3算法验证--二叉排序树
- USG5500、S5700
- Using Tracert
- iOS富文本(二)初识Text Kit
- iOS富文本(二)初识Text Kit
- Android开发总结笔记 Toasts(吐司泡) 1-1-17
- LeetCode--Power of Two