顺序表二分查找递归算法

16
学年 17 学年第  1 学期 数据结构 实验任务书

专业名称:               实验学时:     2     

课程名称: 数据结构      任课教师:   翟海霞      

实验题目:         查找算法实现与分析             

实验环境:     Visual C++ 6.0                    

 

实验项目七:查找算法实现与分析

 实验目的:1.掌握顺序表的查找方法,尤其是二分查找方法。

          2.掌握二叉排序树的建立及查找过程,理解二叉排序树查找过程及插入和删除算法。

 实验内容:1.编写程序实现有序表二分查找的递归算法;

       2.建立二叉排序树并对其进行查找、遍历等有关操作。

            3.选作:判断一棵二叉树是否为二叉排序树。

#include<iostream>
#include<cstdlib>
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=(ElemType *)malloc(MAXSIZE *sizeof(ElemType));
	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*/
int  BinSrch(SSTable L,int  k,int low,int high)
//在长为n的有序表中查找关键字k,若查找成功,返回k所在位置,查找失败返回0。
{
int mid;
if(low<=high)  //low和high分别是有序表的下界和上界
  {  mid=(low+high)/2;
   if(L.R[mid].key==k)  return mid;
   else if(L.R[mid].key<k) return  BinSrch(L,k,mid+1,high);
        else return  BinSrch(L,k,low,mid-1);
   }
else  return  0;//查找失败。
}//算法结束
void Show_End(int result,int testkey)
{
	if(result==0)
		cout<<"未找到"<<testkey<<endl;
	else
		cout<<"找到"<<testkey<<"位置为"<<result<<endl;
	return;
}
int main()
{
	
	SSTable ST;
	InitList_SSTable(ST);
	Insert_SSTable(ST);
	int testkey1=7,testkey2=200;
	int result;
	result=BinSrch(ST,testkey1,1,99);
	Show_End(result,testkey1);
	result=BinSrch(ST,testkey2,1,99);
	Show_End(result,testkey2);
}

    原文作者:查找算法
    原文地址: https://blog.csdn.net/idealistic/article/details/53334785
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞