Main函数 Main函数中增加了时间函数用来测试查找时间的大小,当然,在试验中,无法输入大量数据,故两者查找时间相差不大。 intmain(intargc,char*argv[]){clock_t start,finish;printf("输入构造的顺序表的长度:");SSTable ST;intn;scanf("%d",&n);CreateTable(ST,n);printf("检查顺序表\n");OutputTable(ST)...
intSearch2(inta[],intn,intkey){inti=n; a[0]=key;//设置“哨兵”while(a[i]==key){//若不是找的元素i--;//从前往后查找}returni;//查找失败也返回0} 折半查找 仅适用于有序的顺序表 算法思路:首先将给定值key与表中中间位置的元素的关键字比较,若相等,则查找成功,返回该元素的存储位置;若不...
1)操作:将查找表分成若干块,块内无序,块间有序。 2)将长度为n的查找表均匀的分为b块,每块有s个记录,在等概率情况下: (1)若在块内和索引表中均采用顺序查找,则平均查找长度为ASL=(b+1)/2+(s+1)/2=(s2+2s+n)/2s; (2)若s=√n,则平均查找长度取最小值√n+1。 (3)若对索引表采用折半查找...
{inti,key;//Key为查找元素 printf("输入顺序查找元素:"); scanf("%d",&key); ST->data[0]=key;//哨兵 for(i=ST->length;ST->data[i]!=key;--i); printf("顺序查找元素位置:%d\n",i);//位置为0,查找失败,位置为正整数,查找成功 returni; } intSearch_Seq_old(SSTable*ST)//普通查找 从...
① 二叉树查找:最好O(logn),最坏O(n) B-树查找:O(logn) 红黑树查找:O(logn) 哈希查找:O(1) 2、衡量查找算法效率的标准 ① 关键字比较次数 ② 平均查找长度 假设查找线性表为(a, b, c),查找a、b、c的概率分别为0.4、0.1、0.5。顺序查找算法的平均查找长度为:0.4×1+0.1×2+0.5×3 = ...
/* 数据结构C语言版顺序查找 P216 编译环境:Dev-C++4.9.9.2 日期:2011年2月15日 */ #include<stdio.h> #include<malloc.h> #defineN5//数据元素个数 typedefintKeyType;//设关键字域为整型 typedefstruct//数据元素类型(以教科书P215图9.1高考成绩为例) { longnumber;//准考证号 charname[...
在一个已经排序的顺序表中查找,可以使用二分查找来实现。 二分查找的过程是:先确定待查记录所在的范围(区间),然后逐步缩小查找范围,直到找到或者找不到该记录为止。 假设指针low和high分别指示待查找的范围下届和上届,指针mid指示区间的中间值,即 mid=(low + high) / 2。
线性查找,又称为顺序查找,是指在所有给定的值中从一端开始逐个检查每个元素是否为要查找的对象,直到找到为止的过程。 线性查找的过程比较简单,代码演示如下: //线性查找实现(遍历一遍数组查找到相关元素) #include typedef char Data; //ts是要查找的数组,n是数组中元素的个数,d是要查找的对象 ...
{ int *elem; //基地址 int length; //结构体当前长度 int listsize; //结构体最大长度 } Sqlist; //结构体类型名 //各项操作 void Show_Help() { printf("1---初始化线性表\n"); printf("2---销毁线性表\n"); printf("3---清空线性表\n"); ...