C#資料結構和演算法學習系列五—-基礎尋找演算法

來源:互聯網
上載者:User

     資料尋找是基礎的電腦編程工作,而且人們對它的研究已經很多年了。有兩種對列表內資料進行尋找的方法:順序尋找和二叉尋找。當資料項目在列表內隨機排列的時候可以使用順序尋找,而當資料項目在列表內有序排列的時候則會用到二叉尋找。

1.順序尋找演算法。最突出的尋找類型就是從屬記錄集的開始處順次遍曆每條記錄,直到找到所要的記錄或者是到達資料集的末尾。這就是所謂的順序尋找。順序尋找(也被稱為線性尋找)是非常容易實現的。從數組的起始處開始,把每個訪問到的數組元素依次和所要尋找的數值進行比較。如果找到匹配的資料項目,就結束尋找操作。如果遍曆到數組的末尾仍沒有產生匹配,那麼就說明此數值不在數組內。下面是一個執行順序尋找操作的函數

bool SeqSearch(int[] arr, int sValue){     for (int index = 0; index < arr.Length ; index++) //小bug     if (arr[index] == sValue)          return true;     return false;}

如果發現匹配,那麼函數會立刻返回True 並且退出。如果到達數組的末尾,函數還沒有返回True,那麼要尋找的數值就不在數組內,而函數則會返回False。

2.二叉尋找演算法。當要尋找的記錄從頭到尾都是有序排列的時候,為找到數值可以執行一種比順序尋找更加有效尋找。這種尋找被稱為是二叉尋找。為了理解二叉尋找的工作原理,請假設你正試圖猜測由朋友選定的一個在1 至100 之間的數字。對於每次你所做的猜測,朋友都會告訴你是猜對了,還是猜大了,或是猜小了。最好的策略是第一次猜50。如果猜大了,那麼就應該再猜25。如果猜50 猜小了,則應該再猜75。在每次猜測的時候,你都應該根據調整的數的較小或較大範圍(這依賴於你猜測的數是偏大還是偏小)選擇一個新的中間點作為下次要猜測的數。只要遵循這個策略,你最終一定會猜出正確的數。

int RbinSearch(int value, int lower, int upper){     if (lower > upper)          return -1;     else     {          int mid;          mid = (int)(upper+lower) / 2;          if (value < arr[mid])               return RbinSearch(value, lower, mid - 1);          else if (value == arr[mid])               return mid;          else               return RbinSearch(value, mid + 1, upper);     }}

 

     尋找資料集合內的數值是一種隨處可見的電腦操作。最簡單的尋找資料集合的方法是從資料集合的頭部開始尋找資料項目,直到尋找到該資料項目或者執行到資料集合的末尾才結束。這種尋找方法最好用在資料集合相對較小且無序的時候。如果資料集合是有序排列的,那麼二叉尋找演算法會是一種較好的選擇。二叉尋找會持續劃分資料集合直到找到所要尋找的資料項目為止。大家可以採用迭代方式或遞迴方式編寫二叉尋找演算法。C#語言的Array 類包括有內建的二叉尋找方法。在調用二叉尋找的任何時候都應該可以使用此方法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.