查找算法

静态查找结构主要有两种:顺序查找、折半查找

一、顺序查找:这个就不用说了,一个一个的差吧,很差劲的算法了,时间复杂度是O(n)
      public  int  shunXuSearch(  int [] b,  int  c) {
            for  (  int  i = 0; i < b.  length ; i++) {
                if  (b[i] == c) {
                   System.  out .println(  "查到了您想要的结果"  + c +  ",位置在:"  + i);
                     return  i;
              }
          }
          System.  out .println(  "sorry!没有查询到您想要的结果!"  );
            return  -1;
     }
二、折半查找、二分查找:这个需要查找对象是有序的,每一次都找1/2的部分,查找次数大大的减少了。时间复杂度是O(logN)。
   折半查找其实就是一颗二叉树的遍历,其中,中间的元素就是二叉树的根。这里有个问题,如果这个根一年半载才查找一次,而这棵树的叶子需要1秒钟就查找一次,那么这种折半查找是否还有效率呢?就很坑了吧。所以才有了后面的集中查找算法。另外,如果想要添加、或者删除一个数据的时候,整个结构都需要重建,这个代价是不可估量的。
      public  int  binarySearch(  int [] b,  int  c) {
            // 这里需要先排序,假设已经是有序的数组了
            int  low = 0;
            int  high = b.  length  - 1;
            int  middle;
            while  (low <= high) {
              middle = (high + low) / 2;
                if  (c == b[middle]) {
                   System.  out .println(  "您要找的结果"  + c +  "已经找到,位置在:"  + middle);
                     return  middle;
              }  else  if  (c > b[middle]) {
                   low = middle + 1;
              }  else  if  (c < b[middle]) {
                   high = middle - 1;
              }
          }
          System.  out .println(  "sorry!这里没有您想要的结果!"  );
            return  -1;
     }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值