博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
折半查找,binarySearch
阅读量:5282 次
发布时间:2019-06-14

本文共 1455 字,大约阅读时间需要 4 分钟。

折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用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。

二分查找有个缺点就是元数据必须是有序的,因此二分查找之前必须对对数组排序,可以根据需要选择适当的排序算法这里选择的快速排序算法。

  • 首先设定三个变量,lownum,midnum,hignum 假定有十个元素则lownum = 0,hignum=9,midnum=(lownum+highnum)/2.key为查找数据。
  • 如果a[midnum] = key,表示查找到数据,返回midnum
  • 如果key<a[midnum]则midnum = midnum-1,递归查找a[0] ~ a[midnum-1]
  • 如果key>a[midnum]则midnum = midnum+1,递归查找a[midnum+1] ~a[highnum].

 

 

 

下面看一下java的代码实现

package neuq.chao;import java.util.Scanner;class QuickSort{    static void quickSort(int []a,int left,int right){        int ltemp,rtemp,base;        ltemp = left;        rtemp = right;        int t;        base  = a[(right+left)/2];                             //选取中间元素作为边界        while(ltemp
base){ --rtemp; //rtemp向左移 } if(ltemp<=rtemp){ t = a[ltemp]; a[ltemp] = a[rtemp]; a[rtemp] = t; ++ltemp; --rtemp; } } if(ltemp==rtemp){ ltemp++; } if(left
a[midnum]){ i = binarySearch(a,midnum+1,hignum,key); } return i; } public static void main(String args[]){ int shuzu[] = new int[SIZE]; int h,j,i,n; for(h=0;h

 

转载于:https://www.cnblogs.com/code-changeworld/p/4363990.html

你可能感兴趣的文章
tensorflow saver简介+Demo with linear-model
查看>>
Luogu_4103 [HEOI2014]大工程
查看>>
Oracle——SQL基础
查看>>
项目置顶随笔
查看>>
Redis的安装与使用
查看>>
P1970 花匠
查看>>
java语言与java技术
查看>>
NOIP2016提高A组五校联考2总结
查看>>
iOS 项目的编译速度提高
查看>>
table中checkbox选择多行
查看>>
Magento开发文档(三):Magento控制器
查看>>
性能调优攻略
查看>>
ie6解决png图片透明问题
查看>>
瞬间的永恒
查看>>
2019-8-5 考试总结
查看>>
JS中实现字符串和数组的相互转化
查看>>
web service和ejb的区别
查看>>
Windows Azure Cloud Service (29) 在Windows Azure发送邮件(下)
查看>>
微信上传素材返回 '{"errcode":41005,"errmsg":"media data missing"}',php5.6返回
查看>>
div或者p标签单行和多行超出显示省略号
查看>>