有序数组的二分查找

来源:互联网 发布:java如何限制登录次数 编辑:程序博客网 时间:2024/04/20 01:16

二分查找的优点是比较次数少,查找数度快,但是在查找之前必须要简历有序表。另外,二分查找只适用于顺序存储的有序表,而不适用于链接存储的有序表。


二分查找的过程:首先将x与数组的中间项进行比较,若x小于中间项的值,则在线性表的前半部分进行二分查找;若x大于中间项的值,则在线性表的后半部分进行二分查找;若x等于中间项的值,则查找结束。若待二分的子表长度为0时仍然没有找到这个元素,则说明数组中没有x。 


<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;}}}}


0 0