二分查找

折半查找针对有序表:每轮取区间中点与目标比较,相等即命中;目标小于中点就只查左半, 大于则只查右半,查找区间每轮缩小一半。比较 ⌈log₂(n+1)⌉ 次以内必然出结果。

二分查找
01 / 8 步
有序表:5 13 19 21 37 56 64 75 80 88 92,查找目标 21。初始区间 [1, 11]。 比较 0 · 交换 0
伪代码

				
					
					1
					procedure binarySearch(a, n, x)
				
			
				
					
					2
					  low = 1; high = n
				
			
				
					
					3
					  while low <= high do
				
			
				
					
					4
					    mid = (low + high) / 2(向下取整)
				
			
				
					
					5
					    if x = a[mid] then
				
			
				
					
					6
					      return mid                // 查找成功
				
			
				
					
					7
					    else if x < a[mid] then
				
			
				
					
					8
					      high = mid - 1            // 到左半区
				
			
				
					
					9
					    else
				
			
				
					
					10
					      low = mid + 1             // 到右半区
				
			
				
					
					11
					    end if
				
			
				
					
					12
					  end while
				
			
				
					
					13
					  return 0                      // 查找失败
				
			
				
					
					14
					end procedure
				
			
01 / 8
速度