Golang二分查找算法的简单实现

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package  main
       
import  (
     "fmt"
)
       
type Searchable  interface  {
     Len()  int
     Less( int int ) bool
     Equal( int interface {}) bool
}
       
type List [] int
       
func (l List) Len()  int  {
     return  len(l)
}
       
func (l List) Less(first  int , second  int ) bool {
     if  l[first] < l[second] {
         return  true
     }
       
     return  false
}
     
func (l List) Equal(index  int , item  interface {}) bool {
     if  value, ok := item.( int ); ok {
         if  l[index] == value {
             return  true
         }
     }
       
     return  false
}
        
func main() {
     list := [] int { 1 2 3 5 9 }
       
     index := binSearch(list,  3 )
     fmt.Printf( "The index of 3 in the list is %d\n" , index)
       
     index = binSearch(list,  4 )
     fmt.Printf( "The index of 4 in the list is %d\n" , index)
}
        
func binSearch(list List, item  interface {})  int  {
     startFlag :=  0
     stopFlag := list.Len() -  1
     middleFlag := (startFlag + stopFlag) /  2
        
     for  (!list.Equal(middleFlag, item)) && (startFlag < stopFlag) {
         if  list.Less(startFlag, stopFlag) {
             startFlag = middleFlag +  1
         else  {
             stopFlag = middleFlag -  1
         }
         middleFlag = (startFlag + stopFlag) /  2
     }
        
     if  list.Equal(middleFlag, item) {
         return  middleFlag
     else  {
         return  - 1
     }
}










本文转自 ponpon_ 51CTO博客,原文链接:http://blog.51cto.com/liuxp0827/1355505,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
存储 算法 搜索推荐
软考算法破壁战:从二分查找到堆排序,九大排序核心速通指南
专攻软考高频算法,深度解析二分查找、堆排序、快速排序核心技巧,对比九大排序算法,配套动画与真题,7天掌握45%分值模块。
82 0
软考算法破壁战:从二分查找到堆排序,九大排序核心速通指南
|
8月前
|
算法 Java 索引
算法系列之搜素算法-二分查找
二分查找是一种在`有序`数组中查找特定元素的算法。它的基本思想是通过将数组分成两半,逐步缩小查找范围,直到找到目标元素或确定目标元素不存在。
111 9
算法系列之搜素算法-二分查找
|
算法
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
154 0
|
10月前
|
算法 索引
【算法】——二分查找合集
二分查找基础模版和进阶模版,查找元素位置,搜索插入位置,x的平方根,山脉数组的峰顶索引,寻找峰值,点名
|
12月前
|
算法 C# 索引
C#二分查找算法
C#二分查找算法
114 1
|
存储 算法 C语言
【C语言】二分查找算法
【C语言】二分查找算法
138 0
|
消息中间件 存储 算法
一文搞懂二分查找算法!
一文搞懂二分查找算法!
379 0
|
算法 Java 索引
数据结构与算法学习十五:常用查找算法介绍,线性排序、二分查找(折半查找)算法、差值查找算法、斐波那契(黄金分割法)查找算法
四种常用的查找算法:顺序查找、二分查找(折半查找)、插值查找和斐波那契查找,并提供了Java语言的实现代码和测试结果。
143 0
|
存储 算法 Java
深入算法基础二分查找数组
文章深入学习了二分查找算法的基础,通过实战例子详细解释了算法的逻辑流程,强调了确定合法搜索边界的重要性,并提供了Java语言的代码实现。
深入算法基础二分查找数组
|
算法
【算法】二分查找(整数二分和浮点数二分)
算法学习——二分查找(整数二分和浮点数二分)
170 0
【算法】二分查找(整数二分和浮点数二分)

热门文章

最新文章

推荐镜像

更多