本文目录
- 求二分查找基本思想~
- 二分查找的算法复杂度
- 二分查找算法
- 顺序表的顺序查找和二分查找
- C#二分查找算法
- 如果数据是有序的,可以采用二分查找算法以获得更高的效率对吗
- 用顺序表实现二分查找算法
- 对比顺序查找,二分查找和哈希查找算法,它们各自的特点是什么
求二分查找基本思想~
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。二分查找,别称折半查找Binary-Search优点:查找速度快条件:待查表为有序表1算法要求:必须采用顺序存储结构2.必须按关键字大小有序排列。算法复杂度:假设其数组长度为n,其算法复杂度为o(log(n))下面提供一段二分查找实现的伪代码:BinarySearch(max,min,des)mid-《(max+min)/2while(min《=max)mid=(min+max)/2if mid=des thenreturn midelseif mid 》des thenmax=mid-1elsemin=mid+1return max折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如 果x《a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x》a[n/2],则我们只要在数组a的右 半部继续搜索x。
二分查找的算法复杂度
二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x《a[n/2],则只要在数组a的左半部分继续搜索x,如果x》a[n/2],则只要在数组a的右半部搜索x.时间复杂度无非就是while循环的次数!总共有n个元素,渐渐跟下去就是n,n/2,n/4,....n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数由于你n/2^k取整后》=1即令n/2^k=1可得k=log2n,(是以2为底,n的对数)所以时间复杂度可以表示O()=O(logn)下面提供一段二分查找实现的伪代码:BinarySearch(max,min,des)mid-《(max+min)/2while(min《=max)mid=(min+max)/2if mid=des thenreturn midelseif mid 》des thenmax=mid-1elsemin=mid+1return max折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如 果x《a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x》a[n/2],则我们只要在数组a的右 半部继续搜索x。
二分查找算法
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 int binSearch(const int *Array,int start,int end,int key){int left,right;int mid;left=start;right=end;while (left《=right) { /注释中为递归算法,执行效率低,不推荐mid=(left+right)/2;/* if (key《Array[mid]) {return(binSearch(Array,left,mid,key));}else if(key》Array[mid]){return (binSearch(Array,mid+1,right,key));}elsereturn mid;*/if (key《Array[mid]) {right=mid-1;}else if(key》Array[mid]){left=mid+1;}elsereturn mid;}return -1;}
顺序表的顺序查找和二分查找
顺序查找,二分查找和哈希查找算法,它们各自的特点是:1.对比顺序查找的特点就是从表的第一个元素开始一个一个向下查找,如果有和目标一致的元素,查找成功;如果到最后一个元素仍没有目标元素,则查找失败。2.二分查找的特点就是从表中间开始查找目标元素。如果找到一致元素,则查找成功。如果中间元素比目标元素小,则仍用二分查找方法查找表的后半部分(表是递增排列的),反之中间元素比目标元素大,则查找表的前半部分。3.哈希算法的特点是是使用给定数据构造哈希表,然后在哈希表上进行查找的一种算法。先给定一个值,然后根据哈希函数求得哈希地址,再根据哈希地址查找到要找的元素。是通过数据元素的存储地址进行查找的一种算法。
C#二分查找算法
二分查找的基本思想是:(设R[low..high]是当前的查找区间) (1)首先确定该区间的中点位置:mid=(low+high)/2 (2)然后将待查的K值与R[mid].key比较:若相等,则查找成功并返回此位置,否则须确定新的查找区间,继续二分查找// Source:public int search(int q) { int i, low = 0, high = q.Length - 1, middle; Console.Write(“请输入想要查找的数字:“); i=int.Parse(Console.ReadLine()); while (low 《= high) { middle = (low + high) / 2; if (i == q[middle])return i; if (i 《 q[middle])high = middle - 1; else low = middle + 1; } throw new Exception(“数组中不存在这个数。“); }
如果数据是有序的,可以采用二分查找算法以获得更高的效率对吗
摘要二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
咨询记录 · 回答于2021-11-11
如果数据是有序的,可以采用二分查找算法以获得更高的效率对吗
亲,您好,很高兴为您服务!正在为您努力整理答案中,大概在2-3分钟左右回复您,麻烦您稍等一下啦,谢谢您哟
亲。您好感谢您的耐心等待
亲,是可以提高查询速度的呢
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
所以对于这种有序的结构,二分查找是最优的查询呢~
亲,如果您对我的服务满意请给赞鼓励一下呢,谢谢您哟!祝您生活愉快!
用顺序表实现二分查找算法
#include《iostream》using namespace std;int a;int find1(int l,int r,int x){int m=(l+r)/2;if(l》r)//查找失败 return -1;if(x==a[m])//查找成功返回下标 return m;else if(x》a[m])find1(m+1,r,x);//查找右边 else if(x《a[m])find1(l,m-1,x);//查找左边 }int main(){//折半查找,待查找数列必须有序(升序或降序) int x,n,num;cin》》n;//输出n待查找数列长度 for(int i=0;i《n;i++)cin》》a[i];//输入n个数 cin》》x;//输入查找值 num=find1(0,n,x);//调用折半查找函数(返回下标)if(num!=-1)//数组下标0~n-1;返回-1查找失败 {cout《《x《《“:在数组中的位置 “;cout《《num《《endl;}elsecout《《“查找失败“《《endl;return 0;}
对比顺序查找,二分查找和哈希查找算法,它们各自的特点是什么
顺序查找,二分查找和哈希查找算法,它们各自的特点是:1.对比顺序查找的特点就是从表的第一个元素开始一个一个向下查找,如果有和目标一致的元素,查找成功;如果到最后一个元素仍没有目标元素,则查找失败。2.二分查找的特点就是从表中间开始查找目标元素。如果找到一致元素,则查找成功。如果中间元素比目标元素小,则仍用二分查找方法查找表的后半部分(表是递增排列的),反之中间元素比目标元素大,则查找表的前半部分。3.哈希算法的特点是是使用给定数据构造哈希表,然后在哈希表上进行查找的一种算法。先给定一个值,然后根据哈希函数求得哈希地址,再根据哈希地址查找到要找的元素。是通过数据元素的存储地址进行查找的一种算法。