Search algs
Posted crazyranzhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Search algs相关的知识,希望对你有一定的参考价值。
第一次开始学算法就是二分法了吧,那时候就是感觉神奇+有趣,嗯,还是记录一下吧
推荐:算法4讲的内容,很清楚的
1 public static int search(int[] a, int k) { 2 int lo = 0, hi = a.length - 1; 3 if (k < a[lo] || k > a[hi]) return -1; 4 5 /** 6 * 1. mid +1/-1是为了防止相邻两个位置的作比较得出mid永远等于lo的情况,从而无限循环 7 * 2. 另一方面mid +1/-1排除了mid位置的元素 (最近在发现第一点,一直以来都以为是因为考虑到第二点,谨记谨记) 8 */ 9 while (lo <= hi) { 10 int mid = lo + (hi - lo) / 2; 11 if (a[mid] < k) lo = mid + 1; 12 else if (a[mid] > k) hi = mid - 1; 13 else return mid; 14 } 15 return -1; 16 }
以上是关于Search algs的主要内容,如果未能解决你的问题,请参考以下文章
ALGORITHM3.1 Sequential search (in an unordered linked list)