标签:二分 int ary high item 算法 查找 low main
二分查找
对于一个有序的可迭代序列,查找一个元素时,每次都猜中间的那个数,这样一次可以排除掉一半的数据
Python版本
def main(ary, item):
low = 0
high = len(ary) - 1
while low <= high:
mid_index = (low+high) // 2 # 中间索引位
mid_value = ary[mid_index] # 中间值
if mid_value == item:
return mid_index
elif mid_value < item:
low = mid_index + 1
else: # mid_value > item:
high = mid_index - 1
return None
ary = [1, 3, 4, 56, 78, 99]
print(main(ary, 3)) # 1
Java版本
public class More {
public static void main(String[] args) {
Integer[] ary = new Integer[] {1, 3, 4, 56, 78, 99};
int item = 3;
int low = 0;
int high = ary.length - 1;
while (low <= high) {
int midIndex = (low + high) / 2;
int midValue = ary[midIndex];
if (midValue == item) {
System.out.println(midIndex);
break;
} else if (midValue < item) {
low = midIndex + 1;
} else {
high = midIndex - 1;
}
}
}
}
标签:二分,int,ary,high,item,算法,查找,low,main 来源: https://www.cnblogs.com/pywjh/p/14915066.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。