折半查找-C语言实现

折半查找要求表中数据是有序的。

折半查找的循环条件是low<=high而不是low

//折半查找 
int SearchBin(SqList &L, int key){
	int low=1;
	int high=L.length;
	while(low<=high){
		int mid=(low+high)/2;
		if(key==L.elem[mid]){
			return mid;
		}else if(key

完整的代码实现:

#include
#define MAX 100

//定义顺序表的数据结构 
typedef struct{
	int *elem;
	int length;
}SqList;

//顺序表初始化 
bool InitSqList(SqList &L){
	L.elem=new int[MAX];
	if(!L.elem){
		return false;
	}
	L.length=0;
	return true;
} 

//输入顺序表的元素 
void InputListElem(SqList &L){
	int e, n;
	printf("请输入元素个数:");
	scanf("%d", &n);
	if(n<=0){
		printf("请重新输入大于0的值:");
		scanf("%d", &n);
	} 
	for(int i=0;i0) && (flag==1)){
		flag=0;
		for(int j=0;j<=m;j++){
			if(L.elem[j]>L.elem[j+1]){
				flag=1;
				int t=L.elem[j];
				L.elem[j]=L.elem[j+1];
				L.elem[j+1]=t;
			}
		}
		--m;
	}
}

//折半查找 
int SearchBin(SqList &L, int key){
	int low=1;
	int high=L.length;
	while(low<=high){
		int mid=(low+high)/2;
		if(key==L.elem[mid]){
			return mid;
		}else if(key

折半查找-C语言实现_第1张图片

你可能感兴趣的:(数据结构)