要求能实现顺序表的三种查找算法:顺序查找,二分查找,散列查找(通过菜单实现)

 我来答
ganpengjin
2010-12-09 · TA获得超过115个赞
知道答主
回答量:279
采纳率:0%
帮助的人:186万
展开全部
你有学过数据结构没有?
你看一下,看了有哪不懂的可以问我!
我再帮你解答,你这一下让我写程序,我没时间写啊!

//我暂时就给你写了二分查找的,其它的过两天给你,我没时间写啊,一直都有课
#include<iostream>
using namespace std;
const int size =5;
//*****
bool find(int num[],int first,int length,int value)
{
if(first < length || length > 0){
if(value == num[(first+length)/2]) return true;
else if( value < num[(first+length)/2]) {find(num,first,(first+length)/2 - 1, value);}
else {find(num,(first+length)/2+1,length, value);}
}
else{
return false;
}
}
//****
int _tmain(int argc, _TCHAR* argv[])
{
int num[size],first=0,length=size,i,value;
cout<<"Input the num : \n";
for(i=0;i<size;++i)
cin>>num[i];
cout<<"The searched number: ";
cin>>value;
if( !find(num,first,length,value) )
cout<<"No found;\n";
else
cout<<"Yes found the number\n";
return 0;
}

// 散列表的!
#include <iostream>
using namespace std;

int HashSearch1(int ht[ ], int m, int k)
{
int j=k%m;
if (ht[j]==k)
return j; //没有发生冲突,比较一次查找成功
int i=(j+1) % m;
while (i!=j)
{
if (ht[i]==k)
return i; //发生冲突,比较若干次查找成功
i=(i+1) % m; //向后探测一个位置
}
if (i==j)
throw "溢出";
else
ht[i]=k; //查找不成功时插入
}

void main()
{
int s[11]={11,0,0,47,0,0,0,7,29,8,0};
cout<<"散列表中的元素有:\n";
for(int i=0;i<11;i++)
{
cout<<s[i]<<" ";
}
cout<<"\n"<<"执行查找操作,结果为:\n"; //查找操作
cout<<HashSearch1(s,11,8)<<endl;

}

我想顺序查找不用我写了吧,你那同学学数据结构的顺序查找都不会吗?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式