⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 折半查找.c.txt

📁 C语言数据结构源代码
💻 TXT
字号:
///////////////////////////////////////////////
//			作者:03031A班  李戬			 //
//											 //
//		   2003年  12月 21日   晚			 //
///////////////////////////////////////////////
#include<iostream.h>
#include<stdio.h>
#define MAXITEM 100

struct element{
   int   key;     // 关键字
   //int   data;    // 其他数据
};
typedef struct element sqlist[MAXITEM];

int binsrch(sqlist r, int k, int n)
// k为给定值,返回i为关键字等于k的记录在表r中的序号,
// i值为0表示查找不成功
{
   int i, low=1, high=n, mid, find=0;
   //i为要返回的值的下标,low为数组中最前的值
   //high为数组中最後的值,mid为数组中间的值,find为退出循环标志

   while (low<=high && !find) 
   {
      mid=(low+high)/2;//mid取值
      if (k<r[mid].key)   high=mid-1;
	  //如果K小于中间的那个值 high就移到mid-1的位置 缩小查找区间
      else  if (k>r[mid].key)   low=mid+1;
	  //如果K大于中间的那个值 low就移到mid+1的位置 缩小查找区间
      else 
	  {
            i=mid;//否则 mid就是要找的那个值
            find=1;
      }
   }
   if (!find)   i=0;
   return i;
}

void main(void)
{
	sqlist b;
	int j=0,findnum,result;
	do
	{
		cout<<"please enter a number:"<<ends;
		cin>>b[j+1].key;//从下标为1开始输入
		j++;
	}while(j<6);

	cout<<endl<<b[0].key;//下标为零的数字为监视哨  不需要存放任何值

	cout<<endl<<"please enter a number you want to find"<<ends;
	cin>>findnum;
	result=binsrch(b,findnum,j);
	if(result!=0)
		cout<<endl<<"you find number is the "<<result<<" s"<<endl;
	else
		cout<<endl<<"can not find"<<endl;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -