1.折半查找算法
1)问题描述:从键盘读入一串整数和一个待查关键字,查找在该整数串中是否有这个待查关键字。如果有,输出它在整数串中的位置;如果没有,输出-1
2)实验要求:
- 利用折半查找算法查找
- 用递归和非递归两种方式实现折半查找算法
3) 实现提示:
- 递归实现参考书上折半查找算法的实现
- 非递归算法利用栈实现
#include<iostream>
#include<algorithm>
using namespace std;
int search(int s[],int key,int n){
int low=1,high=n;
int mid;
while(low<=high){
mid = (low+high)/2;
if(s[mid] == key) return mid;
else if(key<s[mid]){
high = mid - 1;
}
else low = mid + 1;
}
return -1;
}
int main(){
int s[100],s1[100],i=1,k,n,n1;
cout<<"输入元素个数和要查找元素"<<endl;
cin>>n>>k;
n1=n;
while(n1--){
cin>>s[i++];
s1[i-1] = s[i-1];
}
sort(s1+1,s1+n+1);
n1 = search(s1,k,n);
cout<<"查找结果:"<<endl;
if(n1==-1) cout<<-1;
else{
for(i=1;i<=n;i++){
if(s1[n1] == s[i]){
cout<<i;
}
}
}
return 0;
}
2.构造二叉排序树,并进行中序遍历
1)问题描述:从键盘读入一串整数构造一棵二叉排序树,并对得到的二叉排序树进行中序遍历,得到有序序列。