迴圈搜尋法(使用衛兵)

2022-01-29 09:17:09 字數 1357 閱讀 5139

/*

迴圈搜尋法(使用衛兵)

說明:搜尋的目的,是在「已排序的資料」中尋找指定的資料,而當中循序搜尋是最基本的搜尋法,只要從資料開頭尋找到最後,看看是

否找到資料即可。

解法:初學者看到循序搜尋,多數都會使用以下的方式來進行搜尋:

while(i < max)

i++;

}這個方法基本上沒有錯,但是可以加以改善,可以利用設定衛兵的方式,省去if判斷式,衛兵通常設定在數列最後或是最前方,假設

設定在列前方好了(索引0的 位置),我們從數列後方向 前找,如果找到指定的資料時,其索引值不是0,表示在數列走訪完之前就

找到了,在程式的撰寫上,只要使用乙個while迴圈就可 以了。下面的程式為了配合衛兵的設定,自行使用快速排序法先將產生的數

列排序,然後才進行搜尋 ,若只是數字的話,通常您可以使用程式語言函式庫所提供的搜尋函式.

*/#include

#include

#include

#define max 10

#define swap(x, y)

int search(int

);int partition(int , int, int

);void quicksort(int , int, int

);int main(void

);

inti, find;

srand(time(null));

for(i = 1; i <= max; i++)

quicksort(number,

1, max);

printf(

"數列:");

for(i = 1; i <= max; i++)

printf(

"\n輸入搜尋值: ");

scanf("%d

", &number[0

]);

if(find =search(number))

else

printf("\n

");return0;

}int search(int

number)

int partition(int number, int left, int

right)

}swap(number[i+1

], number[right]);

return i+1;}

void quicksort(int number, int left, int

right)

}

執行結果:

循序搜尋法(使用衛兵)

說明 搜尋的目的,是在 已排序的資料 中尋找指定的資料,而當中循序搜尋是最基本的搜尋法,只要從資料開頭尋找到最後,看看是否找到資料即可。解法初學者看到循序搜尋,多數都會使用以下的方式來進行搜尋 while i max i 這個方法基本上沒有錯,但是可以加以改善,可以利用設定衛兵的方式,省去if判斷式...

使用迴圈和遞迴方法實現二分法搜尋

對於已排序的序列,實現二分法搜尋演算法,有迴圈和遞迴兩種策略。對於這種演算法,中心點一直是乙個開區間,因此下一次搜尋時新區間應該相應的 1,從而最終start end coding utf 8 def binarysearch1 l,item start 0 end len l 1 while st...

使用窮舉法實現最優路徑搜尋

呼叫sweep 窮舉演算法解決tsp問題 函式格式為 length sweep l 其中 l 距離矩陣 length 最短路徑長度 呼叫distancematrix 求距離矩陣 函式格式為 t distancematrix a 其中 a n個點的座標矩陣,是乙個n行2列的矩陣,第一列為橫座標,第二列...