首页 > 代码库 > 有序数组的二分查找
有序数组的二分查找
二分查找的优点是比较次数少,查找速度快,但是在查找之前必须建立有序表。另外,二分查找只适用于顺序存储的有序表,而不适用于链接存储的有序表。
假设:给定一个按从小到大排序的数组P,对分查找某个元素的位置。
二分查找的过程为首先将x和数组的中间项进行比较,若x小于中间项的值,则在线性表的前半部分进行二分查找;若x大于中间项的值,则在线性表的后半部分进行二分查找;若x等于中间项的值,则查找结束。若待二分的子表长度为0时仍然没有找到这个元素,则说明数组中没有x。
java代码
<span style="white-space:pre"> </span>// 二分查找 x 数组 ,n 数组长度, a要查找的元素 private static int dichotomyFind(int[] x, int n, int a) { int s, t, k; s = 0; // 数组起始元素 t = n - 1; // 数组最后一个元素 for (;;) { if (t == s) { // 只有一个元素 if (x[t] == a) { return t; } else { return -1; } } else { k = (s + t) / 2; // 二分 if (x[k] < a) { s = k; } else if (x[k] > a) { t = k; } else { return k; } } } }
有序数组的二分查找
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。