1. 程式人生 > >數據結構-查找-線性表查找技術

數據結構-查找-線性表查找技術

pre vector 結構 遍歷 需要 數據 一半 ret int

                順序表的查找技術

  假設有一組書8,5,9,80,16,5,56。。。。如何查找我們的value?

  一般為

for(int i=0;i<size;i++)    
{
if(arry[i]==value) {
      return i;
    }
}
return false;

  看第一個for循環中每次都需要判斷一次i<size,那我們遍歷100個數最壞情況下其實是比較了200次。

  於是我們設定一個哨兵在a[0],然後while循環從後往前比較,加入比較到就返回i,否則返回0。

 1 int search(vector<int
>& v,int value) 2 { 3 v[0]=value; 4 int i=v.size(); 5 while(i!=value) 6 { 7 i--; 8 } 9 return i; 10 }

  這樣就減少了一半的查找時間。

數據結構-查找-線性表查找技術