数据结构

//实验内容:
//在待查找序列中查询指定的数据元素

#include<stdio.h>
#include<stdlib.h>

//函数声明

int main()
{
    //定义能存储5个整数的一维数组,初始化为3,5,6,8,9
       int data[5]={3,5,6,8,9};
   //提示用户输入要查找的数据(可以是数组中存在的数据,也可以是数组中不存在的数据)
       printf("请输入要查找的数据:");
  //读入该数据,存储到变量key中
       int key;
       scanf("%d",&key);
  //调用折半查找函数,查找该数据,如果查找成功则返回该数据在数组中的下标,如果查找失败则返回-1
       int result;
       result=BinarySearch(data,key,5);
  //输出查找结果
       if(result==-1) printf("不存在这个数据!");
       else printf("数据%d在数组中的下标为%d",key,result);

  return 0;
}
int BinarySearch(int a[],int key,int n)
//折半查找函数,在存储n个数据的数组a中查找给定的元素key,如果查找成功则返回该数据在数组中的下标,如果查找失败则返回-1
{
   //定义变量low和high,分别用于存储搜索空间的第一个元素下标和最后一个元素下标

  //初始化low为0,high为n-1

  //当low<=high时,循环在数组a[]中查找给定的元素key
     while(low<=high)
     {
         //定义整型变量middle,用于存放搜索空间的中间元素的下标

         //计算中间元素的下标,存储到middle变量中

         //比较key变量中的值和a[middle]中的值
	//如果key==a[middle],则返回middle

	//如果key<a[middle],则修改high变量为middle-1

	//如果key>a[middle],则修改low变量为middle+1

     }
     //退出循环意味着low>high,查找失败,返回-1
                     
}
原文地址:https://www.cnblogs.com/tanbo/p/15665863.html