数据结构实验报告四

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)问题描述:从键盘读入一串整数构造一棵二叉排序树,并对得到的二叉排序树进行中序遍历,得到有序序列。

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小wal

您的肯定是我创作的动力,谢谢。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值