资源简介 (共14张PPT)二分查找Key 与中间位置的数比比中间数小比中间数大二分查找思想如:用数组d存放升序的数字序列i表示查找范围第一个数组元素下标(起始位置)j表示查找范围最后一个数组元素下标(终止位置)m表示查找范围内中间位置数组元素的下标(中间位置)m=(i+j)//2m =(i+j+1)//2每次d[m]与Key比较会确定下一次查找范围右半区间:左半区间:i=m+1j=m-1d[m]d[m)]>key二分查找思想0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1510 15 17 18 22 27 35 45 48 52 65 67 72 85 97 98Key=52①变量 i和j记录所要查找范围的起始和终止位置i=0j=15②计算中间点M的位置:M= (i+j)//2M= (i+j)//2③比较key和d(M)的值,根据结果重新确定查找的起始和终止位置或者直接告诉已经找到第1次比较:Key>d[m]查找范围:d[8]~d[15]j不变,i=M+1=8i=80 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1510 15 17 18 22 27 35 45 48 52 65 67 72 85 97 98M=(i+j)//2第2次比较:Key>d[m]查找范围:d[8]~d[10]i不变,j=M-1j=100 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1510 15 17 18 22 27 35 45 48 52 65 67 72 85 97 98第3次比较:Key=d[m] 找到了!M= (i+j)//2二分查找思想二分查找程序实现0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1510 15 17 18 22 27 35 45 48 52 65 67 72 85 97 98查找次数 搜索区间 中点 查找键与中点关系 i j0 15第一次 d[0]~d[15] 7 key>d[m] 8 15第二次 d[8]~d[15] 11 key第三次 d[8]~d[10] 9 key=d[m]Key=52二分查找程序实现0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1510 15 17 18 22 27 35 45 48 52 65 67 72 85 97 98查找次数 搜索区间 中点 查找键与中点关系 i j0 15第一次 d[0]~d[15] 7 key>d[m] 8 15第二次 d[8]~d[15] 11 key第三次 d[8]~d[10] 9 key>d[m] 10 10第四次 d[10]~d[10] 10 keyKey=55二分查找程序实现0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1510 15 17 18 22 27 35 45 48 52 65 67 72 85 97 98Key=55二分查找程序实现二分查找程序实现1 2 3 4 5 6 7 8 9 10m=(i+j)//2m =(i+j+1)//2二分查找程序实现1 2 3 4 5 6 7 8 9 10m=(i+j)//2m =(i+j+1)//2二分查找练习数组元素a[0]到a[7]的值分别是“11 ,22,33 ,44,55, 66,77, 88”。若该程序运行结束后,cs的值为2,则key可能的值是( )A.33或77B.22或66C.22或77D.33或66B二分查找练习D二分查找练习B二分查找练习B 展开更多...... 收起↑ 资源预览