常用查詢演算法 (轉)

gugu99發表於2007-08-17
常用查詢演算法 (轉)[@more@]

//search.h包含了所有的常用查詢演算法

//使用順序查詢法的查詢
//seqSearch(const int arr[],int first,int last,int target)
template
int seqSearch(const T arr[],int first,int last,const T& target)
{
 int i=first;

 //掃描下標範圍first<=i //或下標超出範圍
 while (!(i==last)&&!(arr[i]==target))
 i++;

 return i;  //i是匹配值的下標,或者,如果沒有匹配,則i=last
}

//模板函式find_last_of()的實現
template
int find_last_of(const T arr[],int first,int last,const T& target)
{
 int i=last-1;

 //描掃下標範圍first<=i //或下標超出範圍
 while(i>=first&&target!=arr[i])
 i--;
 if (i return i;
}

//二分查詢演算法函式binSearch()的實現
template
int binSearch(const T arr[],int first,int last,const T& target)
{
 int mid;  //中間點的下標
 T midValue;  //用於儲存arr[mid]元素值

 int origLast=last;  //儲存last的初始值

 while(first {
 mid=(first+last)/2;
 midValue=arr[mid];
 if (target==midValue)  //有一個匹配
 return mid;
 //確定要查詢哪個子表
 else if(target last=mid;
 else
 first=mid+1;  //查詢子表的後半部分,重新設定first
 }
 return origLast;  //沒有找到目標值
}


 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-963768/,如需轉載,請註明出處,否則將追究法律責任。

相關文章