/*執行結果:迴圈搜尋法(使用衛兵)
說明:搜尋的目的,是在「已排序的資料」中尋找指定的資料,而當中循序搜尋是最基本的搜尋法,只要從資料開頭尋找到最後,看看是
否找到資料即可。
解法:初學者看到循序搜尋,多數都會使用以下的方式來進行搜尋:
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列的矩陣,第一列為橫座標,第二列...