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,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
存储 算法 索引
【优选算法】—— 二分查找
【优选算法】—— 二分查找
|
2月前
|
算法 程序员 数据处理
算法与人生 揭秘C语言中高效搜索的秘诀——二分查找算法详解
算法与人生 揭秘C语言中高效搜索的秘诀——二分查找算法详解
|
3月前
|
人工智能 算法 测试技术
【动态规划】【二分查找】C++算法 466 统计重复个数
【动态规划】【二分查找】C++算法 466 统计重复个数
|
4月前
|
算法 测试技术 C#
【KMP】【二分查找】【C++算法】100207. 找出数组中的美丽下标 II
【KMP】【二分查找】【C++算法】100207. 找出数组中的美丽下标 II
|
4月前
|
算法 测试技术 C#
C++二分查找算法:包含每个查询的最小区间
C++二分查找算法:包含每个查询的最小区间
|
4月前
|
存储 算法 Java
【算法系列篇】二分查找——这还是你所知道的二分查找算法吗?
【算法系列篇】二分查找——这还是你所知道的二分查找算法吗?
|
1月前
|
算法 测试技术 Serverless
【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素
【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素
|
2月前
|
算法 索引
算法思想总结:二分查找算法
算法思想总结:二分查找算法
|
2月前
|
算法 测试技术 API
深入理解二分查找算法(一)
深入理解二分查找算法(一)
|
3月前
|
机器学习/深度学习 算法 Java
【数据结构查找算法篇】----二分查找【实战项目】
【数据结构查找算法篇】----二分查找【实战项目】
28 1