读书人

循序搜索法(使用卫兵)

发布时间: 2012-12-18 12:43:41 作者: rapoo

循序搜寻法(使用卫兵)

搜的目的,是在「已排序的料」中找指定的料,而中循序搜是最基本的搜法,只要料找到最後,看看是否找到料即可。
解法
初者看到循序搜,多都使用以下的方式行搜:

while(i < MAX) {    if(number[i] == k) {        printf("找到指定值");        break;    }    i++;}



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

下面的程式了配合兵的置,自行使用快速排序法先生的列排序,然後才行搜,若只是字的,通常您可以使用程式言函式所提供的搜函式。

public class Search {    public static int linear(int[] number, int des) {        int[] tmp = new int[number.length + 1];        for(int i = 1; i < tmp.length; i++) {            tmp[i] = number[i-1];          }                tmp[0] = des;                int i = number.length;         while(tmp[i] != tmp[0])             i--;         return i - 1;        }        public static void main(String[] args) {        int[] number = {1, 2, 3, 4, 6, 7, 8};        int find = Search.linear(number, 3);        System.out.println(find >= 0 ? "找到值於索引" + find : "找不到值");     }} 

读书人网 >编程

热点推荐