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

📄 有序表上二分查找.c

📁 有序表上二分查找,数据结构中的一种
💻 C
字号:
#include <stdio.h>

#define MAXSIZE 100
#define KEYTYPE int 

typedef struct
{
    KEYTYPE key;
}SSELEMENT;

typedef struct
{
    SSELEMENT r[MAXSIZE];
	int len;
}SSTABLE;

int search_bin(KEYTYPE k,SSTABLE *st)
{
	//有序表上二分查找
	int low,high,mid;
	low=1;high=st->len;
	//low=1表示元素从下标为1的单元放起
	//high=st->len表示最后一个元素所在下标
	while(low<=high)//low<=high为继续查找的条件
	{
		mid=(low+high)/2;
		if(k==st->r[mid].key) return mid;//k==st->r[mid].key表示查找成功
		else if(k<st->r[mid].key)
			    high=mid-1;
		else low=mid+1;
	}
	return 0;//查找不成功,返回0
}

main()
{
	//顺序表上查找元素
	SSTABLE a;
	int i,j,k;
	printf("请输入有序表元素,元素为整型量(从小到大输入),用空格分开,-99为结束标志:\n");
	j=0;k=1;i=0;scanf("%d",&i);
	while(i!=-99)//输入有序表元素
	{
		j++;
		a.r[k].key=i;
		k++;
		scanf("%d",&i);
	}	
	a.len=j;
	printf("\n有序表元素列表显示:");
	for(i=1;i<=a.len;i++)
		printf("%d  ",a.r[i].key);
	printf("\n");
	printf("\n输入待查元素关键字:");
	scanf("%d",&i);
	k=search_bin(i,&a);
	if(k==0)printf("表中待查元素不存在\n\n");
	else printf("表中待查元素存在\n\n");	
}

⌨️ 快捷键说明

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