加载中...
加载中...
二分法查找

二分法查找

#include "stdio.h"
#define MAXLEN 50 //定义线性表的最大长度

//结构
typedef struct{
int ab[MAXLEN];
int len;
} SList;

//二分查找
int Serach_Bin(SList *list, int key){
int low=1,high=list->len,mid;
while(low<=high){
mid=(low+high)/2;
if(key==list->ab[mid]) return mid+1;
else if(key<list->ab[mid]) high=mid-1;
else low=mid+1;
}
return 0;
}

//初始化
void init(SList *list){
list->len=0;
}

//插入数据
int insertData(SList *list, int d){
if(list->len==MAXLEN)
{ printf("没有空间了!\n");
return 0;
}
list->ab[list->len]=d;
list->len++;
}

//创建数据
int createData(SList *list){
printf("创建数据如下:\n");
for(int i=1;i<10;i++){
insertData(list, i);
printf("%d \t", i);
}
printf("\n");
return 1;
}

int main(){
SList list;
//初始化
init(&list);
//创建数据
createData(&list);
//查找的数
int a=3;
//查找
int loca = Serach_Bin(&list, a);
if(loca != 0)
printf("%d的位置是:%d\n", a, loca);
else
printf("没有查到!");
return 0;
}



没有更多推荐了 [去首页]
image
文章
376
原创
293
转载
83
翻译
0
访问量
183411
喜欢
73
粉丝
5
码龄
7年
资源
3

文章目录

加载中...
0
0