二分查找法在数据繁多的数据中查找是一种快速的方法,每次查找最多需要的次数
为2的n次方小于总个数。
当然是有前提的,就是需要把数据先排好序,这里指的都是数值型的数据。
基本思想就是把需要找的值与排序好数组的中间值比较,这里的中间值不是指大小,而是指顺序,
如果比中间值大,则就把前面的部分去掉,接下来只与后面剩余的部分比较,
如果比中间值小,则就把后面的部分去掉,接下来只与前面剩余的部分比较。
如何反复比较,这样就能快速找到所需要的值。这也是最多需要寻找次数的依据。
所以这也涉及到递归的使用。
下面是非常简单的例子,还有很多的bug,主要是表达一个思路,例子主要是用来找出指定值的索引。
int[] a = { 1, 6, 3, 55, 77, 46, 67, 7, 98, 87, 88 }; Array.Sort<int>(a); for (int i = 0; i < a.Length; i++) { textBox1.AppendText(a[i].ToString()+" "); } MessageBox.Show(getIndex(a, 0, a.Length, 46).ToString()); private int getIndex(int[] a,int start,int end,int num) { if (a[(start + end) / 2] < num) { return getIndex(a, start, (start + end) / 2, num); } else if (a[(start + end) / 2] < num) { return getIndex(a, (start + end) / 2, end, num); } else { return (start+end)/2; } }