黑马程序员-折半法判断数组元素位置

来源:互联网 发布:天高云淡秒赞4.0源码 编辑:程序博客网 时间:2024/06/05 15:40

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------


  private void button1_Click(object sender, EventArgs e)        {                        int[] a = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};//数组            int key = int.Parse(txtKey.Text);//找到要搜索的那个KEY            int location = BindarySearch(a, key);//位置            s.Text += "位置"+location;            if (location == -1)            {                s.Text += "未发现";            }                    }        public int BindarySearch(int[] array, int key)//返回所在的位置        {            int low = 0, high = array.Length - 1;            int middle;            while (low <= high)            {                middle = (low + high) / 2;                               if (array[middle] == key)                {                    return middle;                }                else if (array[middle] > key)                {                    high = middle - 1;                }                else                {                    low = middle + 1;                }                s.Text += middle.ToString()+" ";            }            return -1;        }     

折半法判断,更加适用于排序号的数组,查找元素的位置

线性查找则更适合于乱序数组。

程序员不能瞎大方!!!!严谨性,不能随意的扩大折半数组的长度

if (array[middle] == key)                {                    return middle;                }                else if (array[middle] > key)                {                    high = middle - 1;(本想+1又何妨)                }                else                {                    low = middle + 1;(-1更广范围的判断)                }

原创粉丝点击