700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 数据结构—查找(顺序查找和折半查找)

数据结构—查找(顺序查找和折半查找)

时间:2023-09-19 14:34:57

相关推荐

数据结构—查找(顺序查找和折半查找)

1、顺序查找的查找表的数据结构

typedef struct{Elemtype *elem;int TableLen; //表的长度 }SeqList;

2、顺序查找的主要代码

//一般线性表的顺序查找int Search_Seq(SSTable ST,ElemType key){ST.elem[0]=key; //0号元素放关键字,哨兵for(int i=ST.TableLen;ST.elem[i]!=key;i--){return i;} }

其时间复杂度为O(n);其对于顺序表和链表都适用。

3、折半查找的查找表的数据结构

typedef struct{Elemtype *elem;int TableLen; //表的长度 }SSTable;

4、折半查找的主要代码(对于升序的顺序表)

//折半查找int Binary_Search(SeqList L,ElemType key){int low=0,high=L.TableLen-1,mid;while(low<=high){mid=(low+high)/2; //取中间位置if(L.elem[mid]==key) //查找成功 return mid;else if(L.elem[mid]<key)//在右半边查找 {low=mid+1;} else //在左半边查找 high=mid-1;}return -1;}

其时间复杂度为O(logn);但是其只能对于有序的顺序表,因为链表不具备随机存储的特性。折半查找的过程是一棵平衡二叉树。

如果当前Low和high之间的元素个数是奇数个,则左右两边元素个数相等,否则就是左半部分比右半部分少一个元素(针对于mid=(low+high)/2,也即是向下取整时,若向上取整,则相反)。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。