#include "findAlgorithm.h"
template <typename Keytype>
/***************************************************
普通查找normal_find(陣列名,所查找物件)
***************************************************/
int FindAlgorithm<Keytype>::normal_find(Keytype key[],Keytype find_obj)
{
int length_of_key=sizeof(key);
int i;
for( i=0;i<length_of_key;i++)
if(key[i]==find_obj)
return i+1;
return -1;
}
/***************************************************
折半查找half_find(陣列名,所查找物件,起始位置,結束位置,升降序)
***************************************************/
template <typename Keytype>
int FindAlgorithm<Keytype>::half_find(Keytype key[],Keytype find_obj,int head,int end,int rise_or_descend)
{
if(head>end)
return -1;
else if(key[(head+end)/2]==find_obj)
return (head+end)/2;
else if(key[(head+end)/2]>find_obj)
{
if(rise_or_descend==1)
half_find(key[],find_obj,head,(head+end)/2-1,1);
else
half_find(key[],find_obj,(head+end)/2+1,end,2);
}
else
{
if(rise_or_descend==1)
half_find(key[],find_obj,(head+end)/2+1,end,1);
else
half_find(key[],find_obj,head,(head+end)/2-1,2);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/69152.html
標籤:基礎類
