30 lines
		
	
	
		
			403 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			403 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package utility
 | 
						||
 | 
						||
import "sort"
 | 
						||
 | 
						||
// 二分查找(会将切片 a 排为升序)
 | 
						||
//
 | 
						||
// 找到返回 true,未找到返回 false
 | 
						||
func BinarySearch(a []int, x int) bool {
 | 
						||
	if !sort.IntsAreSorted(a) {
 | 
						||
		sort.Ints(a)
 | 
						||
	}
 | 
						||
 | 
						||
	l, r := 0, len(a)-1
 | 
						||
 | 
						||
	for l <= r {
 | 
						||
		m := (l + r) / 2
 | 
						||
		if a[m] == x {
 | 
						||
			return true
 | 
						||
		}
 | 
						||
		// x 在左边
 | 
						||
		if x < a[m] {
 | 
						||
			r = m - 1
 | 
						||
		} else {
 | 
						||
			l = m + 1
 | 
						||
		}
 | 
						||
	}
 | 
						||
 | 
						||
	return false
 | 
						||
}
 |