算法(4)查找

在算法中查找有一种叫做线性查找:

分为:顺序查找
          折半查找
 
查找有两种形态:
分为:破坏查找,比如查找一个数90 查到的第一个88那么把它移除,所以破坏结构
          非破坏性查找
 
顺序查找:
非常简单,就是过一下数组,一个个的比较,找到为止。
java代码实现:
// 顺序查找
     void SequenceSearch(int[] a, int i) {
          for (int j = 0; j < a.length; j++) {
               if (i == a[j]) {
                    return j;
               } 
          }
          return -1;
     }
 
折半查找:前提条件
1.数组必须有序,
2.这种查找只限于线性的储存结构
// 折半查找
     private static int BinaryrSearch(int[] a, int i) {
          int low = 0;
          int high = a.length - 1;
          while (low <= high) {
               int middle = (low + high) / 2;
               if (a[middle] == i) {
                    return middle;
               } else if (a[middle] > i) {
                    high = middle - 1;
               } else {
                    low = middle + 1;
               }
          }
          return -1;
     }
 
有一种查找是破坏性的,那么对于线性结构数据来说很悲惨,因为每一次破坏一下,都可能导致数组元素整体前移或者后移。所以线性结构的查找不适合做破坏性的操作。
posted @ 2015-06-19 15:17  呜呜啦啦拉  阅读(143)  评论(0)    收藏  举报