二分查找算法能适用于散列表吗(二分查找算法java代码)
你们好,最近小活发现有诸多的小伙伴们对于二分查找算法原理,二分查找算法这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 线性搜索的条件:要求数据表有序。
2、 线性搜索的工作原理:首先将表格中间记录的关键词与搜索关键词进行比较;
3、 (如果两者相等,则搜索成功)
4、 (否则,将表分成两个子表,根据比较结果决定寻找哪个子表。)
5、 具体实现过程:第一步,输入数据。
6、 可以直接将需要的数据存放在数组中,比如int a [10]={1,2,3,4,5,6,7,8,9,10 };
7、 也可以循环输入。
8、 for(I=0;I n;我)
9、 {
10、 scanf('%d 'a[I]);
11、 }
12、 实现数据输入数组;
13、 具体实现过程:第二步:写循环。
14、 如果在某个周期中没有找到匹配的数据,那么应该将(下标最大值1)或(下标最小值-1)赋给中间值mid
15、 当下标最小值超过最大值时,循环结束,且(低高);
16、 而(低=高)是建立环路的条件。
17、 具体实施过程:第二步,判断。
18、 如果循环找到与您的搜索匹配的数据,则结束循环;
19、 if(x==a[mid])
20、 {
21、 Printf('找到数字' 6 '');
22、 打破;
23、 }
24、 注意:如果你想找到同样数量的你的数据,使用continue;
25、 即:
26、 if(x==a[mid])
27、 {
28、 Printf('找到数字' 6 '');
29、 柜台;//记录的数量
30、 继续;
31、 }
32、 c语言代码实现:
33、 #包含stdio.h
34、 int main()
35、 {
36、 int a[10]={1,2,3,4,5,6,7,8,9,10 };
37、 Printf('找到数字“6”。\ n’);
38、 int low=1;
39、 int high=10//数组的最大下标n-1
40、 int x=6;//要查找的数字
41、 int mid
42、 while(低=高)
43、 {
44、 mid=(低高)/2;//下标的一半,int类型的除法和舍入。
45、 if(x a[mid])
46、 {
47、 高=中1;
48、 }
49、 if(x==a[mid])
50、 {
51、 Printf('找到数字' 6 '');
52、 打破;
53、 }
54、 其他
55、 {
56、 低=中1;
57、 }
58、 }
59、 返回0;
60、 }
61、 运行程序;成功截图如下;
62、 二分搜索法的时间复杂度为O(log(n)),最坏的时间复杂度为O(n)。
以上就是二分查找算法这篇文章的一些介绍,希望能帮助到大家。
扫描二维码推送至手机访问。
版权声明:文章内容摘自网络,如果无意之中侵犯了您的版权,请联系本站,本站将在3个工作日内删除。谢谢!