标签:
二分搜索的实质上是不断地将有序数据集进行对半分割,并检查每个分区的中间元素。
二分查找的时间复杂度是:O(lgn)
以下是参考《算法精解C语言描述》用C#改写的代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BiSearch20150715 { class Program { public static void BiSearch(int[] array, int target) { int left = 0; int right = array.Length - 1; int mid; Array.Sort(array); while (left <= right) { mid = (right - left) / 2 + left; if (array[mid] == target) { Console.WriteLine("Found at {0}", mid); return; } else if (array[mid] > target) { right = mid - 1; } else { left = mid + 1; } } Console.WriteLine("Not Found"); } static void Main(string[] args) { int[] array = new int[10] { 1, 2, 4, 5, 6, 9, 11, 3, 8, 12 }; int target1 = 8; int target2 = 13; BiSearch(array, target1); BiSearch(array, target2); } } }
如果传入数组不是有序的,那么不能得出元素在数组中的正确位置。
此代码只做为我的参考
标签:
原文地址:http://www.cnblogs.com/holt/p/4647837.html