C#實現二分法尋找演算法__演算法

來源:互聯網
上載者:User
定義

在電腦科學中,二分法尋找(binary search)也叫折半尋找(half-interval search),又叫對數搜尋(logarithmic search)。這是一種在有序數組中尋找某一特定元素的搜尋演算法。 原理

搜尋過程從數組的中間元素開始。如果中間元素正好是要尋找的元素,則搜尋過程終止;如果某一特定的元素大於或者小於小於中間元素,那就在大於或者小於中間元素的那一半尋找,而且跟開始一樣也從中間元素開始比較。如果某一步驟數組為空白,則代表找不到。 特點

這種搜尋演算法每依次比較都使搜尋範圍縮小一般 注意

這種搜尋演算法用於有序數組中的尋找 應用

可直接用於在一個數組中進行元素的尋找,也可用於插入排序 範例程式碼 下面是一個二分法尋找:

        /// <summary>        /// 二分法尋找        /// </summary>        /// <param name="arr"></param>        /// <param name="key">要尋找的對象</param>        public static int BinarySearch(int[] arr,int value)        {            int low = 0;            int high = arr.Length - 1;            while(low<=high)            {                int middle = (low + high) / 2;                if (value == arr[middle])                {                    return middle;//如果找到了就直接返回這個元素的索引                }                else if(value >arr[middle])                {                    low = middle + 1;                }                else                {                    high = middle - 1;                }            }            return -1;//如果找不到就返回-1;        }

測試一下:
            int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };            int value = BinarySearch(arr, 4);            Console.WriteLine(value);

結果:


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.