基于有序顺序表的折半搜索
来源:互联网 发布:中国教育网络培训学院 编辑:程序博客网 时间:2024/05/11 15:46
#include<iostream>using namespace std;//*****************************************////实验内容 ,实现基于有序顺序表的折半搜索。 ////*****************************************////SeqList.htypedef int keytype;//keytype =inttypedef struct{keytype key;}RecNode;class SeqList{public:SeqList (int MaxListSize=100);~SeqList(){delete[] data;}void CreateList(int n);//顺序表输入int SeqSearch(keytype k);int SeqSearch1(keytype k);tint BinSearch(keytype k,in low,int high);friend void BinInsert(SeqList &R,keytype x);//,infoType y);void PrintList();private:int length;//实际表长int MaxSize;//最大表长RecNode *data;//一维动态数组};SeqList::SeqList(int MaxListSize){//构造函数MaxSize=MaxListSize;data=new RecNode[MaxSize++];length=0;}void SeqList::CreateList(int n){for (int i=1;i<=n;i++)cin>>data[i].key;length=n;}void SeqList::PrintList(){//表输出for (int i=1;i<=length;i++)cout<<data[i].key<<" ";cout<<endl;}int SeqList::SeqSearch(keytype k){//R[0]作为哨兵,用R[0].key==k作为循环下界的终结条件data[0].key=k;//设置哨兵int i=length;//从后向前扫描while(data[i].key!=k)i--;return i;}int SeqList::SeqSearch1(keytype k){//有序表的顺序查找法int i=length;while (data[i].key>k){i--;}if (data[i].key==k){return i;}return 0;}int SeqList::BinSearch(keytype k,int low,int high){//在区间R[low~hight]内二分递归查找关键字值等于k的记录//low的初始值为1,high的初始值为nint mid;while (low<=high){mid=(low+high)/2;if (data[mid].key==k)return mid;//查找成功,返回其下标if (data[mid].key>k)high=mid-1;else low=mid+1;}return 0;}void BinInsert(SeqList &R,keytype x){int low=1,high=R.length,mid,inspace,i;int find=false;while (low<=high&&!find){mid=(mid+high)/2;if (x<R.data[mid].key)high=mid-1;else if (x>R.data[mid].key)low=mid+1;else find=true;}if (find)inspace=mid;else inspace=low;for (i=R.length;i>=inspace;i--)R.data[i+1]=R.data[i];R.data[inspace].key=x;R.length++;}
//main.cpp#include "SeqList.h"void main(){int i=0;SeqListR;R.CreateList(11);R.PrintList();for (int m=43;m<50;m=m+5){i=R.SeqSearch1(m);if (i!=0)cout<<"找到"<<m<<",位置在"<<i<<"处。\n";else cout<<"没有找到"<<m<<"。\n";}}
0 0
- 基于有序顺序表的折半搜索
- 有序表的折半查找
- 顺序表的全排列,幂集合,有序表的折半查找
- 静态表查找--顺序表的查找(有序)--折半查找
- 有序表的折半查找 三
- 折半查找:有序表的查找
- 有序表的查找(折半查找)
- 有序表的查找(折半查找)
- 有序表折半查找的递归算法
- 有序数组的折半查找
- 有序顺序表的查询
- 有序顺序表的归并
- 有序顺序表的插入
- 顺序有序表的合并
- 有序顺序表的插入
- 查找(一)静态查找的顺序查找和 有序折半查找
- (2011.12.07) 09_有序表的折半查找.cpp
- 【数据结构-查找】有序表的查找-折半查找
- webmagic的设计机制及原理-如何开发一个Java爬虫
- npm命令概述
- 7个开源的SNS社交网络平台
- seaslog安装
- 华为笔试
- 基于有序顺序表的折半搜索
- Fragment使用findFragmentById返回null
- Xcopy 复制文件和目录,包括子目录
- android dialog 自定义
- 织梦文章列表自增排序
- libevent介绍
- linux samba 与window 共享文件
- 角点检测
- 银行取款[多线程]{未进行线程同步}(junit不适合多线程并发单元测试)