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)

在 Navigation Drawer 的每个片段中实现不同的 Action Bar 项

Algs4-1.2.5以下这段代码会打印出什么?

Algs4-1.2.18累加器的方差

Algs4-2.1.17动画-插入排序

Algs4-2.1.17动画-选择排序