二分搜索算法


二分搜索用於在已經排序好的集合中搜索值,每次與中間值對比,小於則搜索前半段,大於中間值則在后半段,繼續二分搜索,實現代碼:

        /// <summary>
        /// 二分查找
        /// </summary>
        /// <param name="arr">已經排序過的數組</param>
        /// <param name="searchkey">搜索值</param>
        /// <returns></returns>
        private static int BinarySearch(int[] arr, int searchkey)
        {
            int start = 0;
            int end = arr.Length - 1;

            int mid = 0;
            while (start <= end)
            {
                mid = (start + end) / 2;
                if (arr[mid] < searchkey) //中間值小於 搜索值,說明要查找值在尾部
                {
                    start = mid + 1;
                }
                else if (arr[mid] > searchkey)//中間值大於搜索值,說明要搜索值在首部
                {
                    end = mid - 1;
                }
                else
                {
                    return mid;
                }
            }
            return -mid;
        }

如果查詢不到值返回的是負的最后查詢的中間值的位置,負值變正后+1 則可用來有序插入搜索值,使列表保持排序。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM