循环搜索(使用标志位)

转载 2006年06月22日 14:07:00
初學者看到循序搜尋,多數都會使用以下的方式來進行搜尋:
while(i < MAX) {
    if(number[i] == k) {
        printf("找到指定值");
        break;
    }
    i++;
}

 

這個方法基本上沒有錯,但是可以加以改善,可以利用設定衛兵的方式,省去if判斷式,衛兵通常設定在數列最後或是最前方,假設設定在列前方好了(索引0的位置),我們從數列後方向前找,如果找到指定的資料時,其索引值不是0,表示在數列走訪完之前就找到了,在程式的撰寫上,只要使用一個while迴圈就可以了。

public class LinearSearch {
  public static int search(int[] number, int des) {
    int len = number.length;
    int[] tmp = new int[len + 1];
    /*
    for (int i = 1; i < tmp.length; i++) {
      tmp[i] = number[i - 1];
    }*/
    System.arraycopy(number,0,tmp,1,len);
    tmp[0] = des;

    int k = tmp[0];
    int i = number.length;
    while (tmp[i] != k)
      i--;
    return i - 1;
  }

  public static void main(String[] args) {
       int[] number = {1, 4, 2, 6, 7, 3, 9, 8};
       int find = LinearSearch.search(number, 8);
       if(find != 0)
         System.out.println("找到數值於索引" + find);
       else
         System.out.println("找不到數值");
  }
}

二分查找的循环实现和递归实现

自己实现了二分查找的循环实现和递归实现 说明:二分查找适用于顺序存储结构,不适于链式存储结构,是一个高效的查找方法。虽然折半查找效率高,但是要排序,排序本身是一种很费时的运算。     要求传入的表是...
  • u012814506
  • u012814506
  • 2014年08月14日 16:32
  • 1326

Java嵌套for循环-标签使用

package pkg;import java.util.Scanner;/** * Created by sanmao on 2016/6/28. */ public class Nest { ...
  • qq_16103331
  • qq_16103331
  • 2016年06月28日 15:02
  • 1992

sqlserver游标使用和循环

/*** 游标的使用 讲了这个多游标的优点,现在我们就亲自来揭开游标的神秘的面纱。 使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。 1.3.1声明游标 最简单游标声明:DEC...
  • smartsmile2012
  • smartsmile2012
  • 2014年11月12日 14:50
  • 17109

android应用面试宝典(下);用自定义组件控制循环组件使用bug还添加标志显示答案标志位;通过包名读取配置文件AndroidManifest.xml

simpleadapter重用循环组件不好控制,用自定义组件;先满足整体,个别问题可以用标签标记 PackageInfo info= getPackageManager().getPackageIn...
  • u010026901
  • u010026901
  • 2014年04月01日 20:15
  • 1310

通过设置标志位tag判断队空队满的循环队列

首先我们定义一个具有基本操作方法的Queue类,在这个类中我们设置了一个bool型的变量tag,通过判断tag的值来判断队列是否为空、是否为满。具体是:rear==front&&!tag为空,rear...
  • lrwwll
  • lrwwll
  • 2016年11月04日 10:52
  • 2250

要求顺序循环队不损失一个空间,全部能够得到有效利用,试采用设置标志位tag的方法解决“假溢出”问题,实现顺序循环队列算法

头文件:函数的声明 #include #include #define QUEUESIZE 100 typedef char ElemType; typedef struct { Elem...
  • qaz3171210
  • qaz3171210
  • 2015年02月10日 21:35
  • 1519

javaEE使用标志位完成流程审批

流程表 medical_flowprivate static final long serialVersionUID = 1L; private String bindid; //...
  • qq_28418887
  • qq_28418887
  • 2017年11月27日 23:16
  • 44

流状态标志位

  • 2012年12月14日 15:10
  • 410KB
  • 下载

汇编标志位

  • 2013年05月09日 16:12
  • 524B
  • 下载

汇编标志位

  • 2012年01月04日 10:34
  • 935KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:循环搜索(使用标志位)
举报原因:
原因补充:

(最多只允许输入30个字)