查找之二折半查找(二分法查找)和插值查找

Posted XuGuobao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找之二折半查找(二分法查找)和插值查找相关的知识,希望对你有一定的参考价值。

一、折半查找的前提是线性表中的记录必须好似关键码有序,线性表必须是顺序存储的。

二、折半查找

 1 public class Binary_SearchDemo01 {
 2     static int[] num = {0,1,3,5};
 3     public static void main(String[] args) {
 4         int key = 3;
 5         int x = Sequential_Search(key);
 6         System.out.println(num[x]);
 7     }
 8     private static int Sequential_Search(int key) {
 9         int low,mid,high;
10         low = 1;
11         high = num.length-1;
12         while(low <= high){
13             mid = (low + high)/2;
14             if(key<num[mid]){                
15                 high = mid-1;
16             }    
17             else if(key>num[mid]){
18                 low = mid+1;        
19             }else{
20                 return mid;
21             }
22         }
23         return 0;
24     }
25 }

折半查找的时间复杂度为O(logn);

以上是关于查找之二折半查找(二分法查找)和插值查找的主要内容,如果未能解决你的问题,请参考以下文章

大话数据结构C语言52 折半查找和插值查找(按比例查找)

插值查找-有序表查找_20230411

Python 查找算法_众里寻他千百度,蓦然回首那人却在灯火阑珊处(线性二分,分块插值查找算法)

数据结构 查找表的顺序查找折半查找插值查找以及Fibonacci查找

数据结构和算法(十八)二分查找

leetcode查找算法(顺序查找,二分法,斐波那契查找,插值查找,分块查找)