#include<iostream> using namespace std; #define MAXSIZE 100 #define OK 1; typedef struct{ int key;//关键字域 }ElemType; typedef struct{ ElemType *R; int length; }SSTable; int InitList_SSTable(SSTable &L) { L.R=new ElemType[MAXSIZE]; if (!L.R) { cout<<"初始化错误"; return 0; } L.length=0; return OK; } int Insert_SSTable(SSTable &L) { int j=1; for(int i=1;i<MAXSIZE;i++) { L.R[i].key=j; L.length++; j++; } return 1; } int Search_Bin(SSTable ST,int key) { // 在有序表ST中折半查找其关键字等于key的数据元素。若找到,则函数值为 // 该元素在表中的位置,否则为0 int low=1,high=ST.length; //置查找区间初值 int mid; while(low<=high) { mid=(low+high) / 2; if (key==ST.R[mid].key) return mid; //找到待查元素 else if (key<ST.R[mid].key) high = mid -1; //继续在前一子表进行查找 else low =mid +1; //继续在后一子表进行查找 }//while return 0; //表中不存在待查元素 }// Search_Bin void Show_End(int result,int testkey) { if(result==0) cout<<"未找到"<<testkey<<endl; else cout<<"找到"<<testkey<<"位置为"<<result<<endl; return; } void main() { SSTable ST; InitList_SSTable(ST); Insert_SSTable(ST); int testkey1=7,testkey2=200; int result; result=Search_Bin(ST, testkey1); Show_End(result,testkey1); result=Search_Bin(ST, testkey2); Show_End(result,testkey2); }
查找算法:
//算法7.2 设置监视哨的顺序查找 #include<iostream> using namespace std; #define MAXSIZE 100 #define OK 1; typedef struct{ int key;//关键字域 }ElemType; typedef struct{ ElemType *R; int length; }SSTable; int InitList_SSTable(SSTable &L) { L.R=new ElemType[MAXSIZE]; if (!L.R) { cout<<"初始化错误"; return 0; } L.length=0; return OK; } int Insert_SSTable(SSTable &L) { int j=1;//空出ST.R[0]的位置 for(int i=1;i<MAXSIZE;i++) { L.R[i].key=j; L.length++; j++; } return 1; } int Search_Seq(SSTable ST, int key){ //在顺序表ST中顺序查找其关键字等于key的数据元素。若找到,则函数值为 //该元素在表中的位置,否则为0 ST.R[0].key = key; //“哨兵” for(int i = ST.length; ST.R[i].key!=key; --i) ; //从后往前找 return i; }// Search_Seq void Show_End(int result,int testkey) { if(result==0) cout<<"未找到"<<testkey<<endl; else cout<<"找到"<<testkey<<"位置为"<<result<<endl; return; } void main() { SSTable ST; InitList_SSTable(ST); Insert_SSTable(ST); int testkey1=7,testkey2=200; int result; result=Search_Seq(ST, testkey1); Show_End(result,testkey1); result=Search_Seq(ST, testkey2); Show_End(result,testkey2); }
相关推荐
折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)
数据结构习题---折半查找代码 void BinInsert(int A[],int &n,int item) { int j,low=1,high=n,mid; while(low) { /* 利用折半查找法查找合适位置*/ mid=(low+high)/2; /* 计算当前查找部分的中间位置*/ if...
由N个有序整数组成的数列已放在一维数组中,给定程序MODI1.C中函数fun的功能是:利用折半查找整数m在数组中的位置。若找到,返回其下标值;反之,返回-1。 折半查找的基本算法是:每次查找前先确定数组中待查的范围...
静态查找表。实现有序表的折半查找算法 静态查找表。实现有序表的折半查找算法 静态查找表。实现有序表的折半查找算法静态查找表。实现有序表的折半查找算法
使用折半查找,输入一个整数,查找是否在数组中,如在给出下标,否则-1
折半查找是数据结构中,查找的其中一种。此资源不但包括折半查找的算法,还包括帮助其运行的其他代码,可直接运行以实现折半查找。注:输入数据时,要将数据从大到小依次输入,方可实现折半查找。
折半查找的递归算法,非常实用,可以实现的C语言程序
查找问题(顺序查找法, 折半查找法,)基本思想:一列数放在数组a(1)---a(n)中,待查找的数放在x 中,把x与a数组中的元素从头到尾一一进行比较查找。用变量p表示a数组元素下标,p初值为1,使x与a(p)比较,如果x不等于a...
主要为大家详细介绍了C语言实现顺序表的顺序查找和折半查找,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
折半查找c语言函数, 在数组总查找 例子
数据结构折半查找,用于C语言版的数据结构。
会变课程设计 任意输入待比较的一组数据,排序,之后再输入需要查找的数,运行即可实现折半查找,界面友好
二叉排序树 折半查找
数据结构中的折半查找程序,C语言描述,数据结构中的折半查找程序,C语言描述
本程序共包含2个查找程序,分别是顺序查找和折半查找。
在该程序中,实现了在10个元素中查找20,用了顺序查找方法和折半查找方法。
java 快速排序 折半查找的界面实现 (递归与分治法)
折半查找算法在顺序表中插入一个元素讲解.pdf
折半查找是一种数据结构算法 非常有用 我们用C语言实现了查找 简单有效
用C语言实现折半查找,折半查找算法较简单