代码如下,设定为只能查找偶数
现在要求当为奇数时输出结果为和它最接近的数(假定为上一位:i-1)
另外如何在显示结果中增加当前指针地址
 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace search
{
    public partial class Form1 : Form
    {
        private int inputdata;        public Form1()
        {
            InitializeComponent();
        }        private void textBox1_TextChanged(object sender, EventArgs e)//输入查找数据 
        {
           inputdata = Convert.ToInt32(textBox1.Text);
        }        private void button1_Click(object sender, EventArgs e)//开始查找
        {
           int data = inputdata;           int[] array = new int[1000];
           for (var i = 0; i < 1500; i++)
               array[i%1000] = i* 2;//循环取模           Array.Sort(array);//将数组排序 
   
           int location = binarysearch(inputdata, array);//调用二分法 
           if (location >= 0)
           {
               MessageBox.Show(location.ToString(), "查找结果");//增加指针位置
           }
           else
           {
               MessageBox.Show("表中不存在您要查找的数据", "查找结果");
           }
        }       private int binarysearch(int data, int[] array)//二分法 
        {           
            int low = 0;
            int high = array.Length; 
            int mid;
            while (low <= high)   
            {
                mid = (low + high) / 2;
                if (array[mid] == data) 
                    return data;
                else
                {
                    if (array[mid] > data)
                    { high = mid - 1; }
                    else if (array[mid] < data)
                    { low = mid + 1; }
                }
             }
             return -1;
         } 
     }
 }

解决方案 »

  1.   

    自己顶,现在就是要增加两个功能 1、如果所查找的值不存在 那么输出向下和它最接近的那个数 2、在输出的messagebox中增加输出当前数所对应的指针  像MessageBox.Show(location.ToString()+xxx, "查找结果");这样
      

  2.   

      MessageBox.Show(location.ToString()+"指针"+data%1000, "查找结果");指针位置我这样写 有问题么 数组长度是1000 循环保存
    现在请问如何实现 当查找结果不存在里输出低一位的那个数
      

  3.   

      private void button1_Click(object sender, EventArgs e)//开始查找
           {
               int data = inputdata;           int[] array = new int[1000];
               for (var i = 0; i <= 1500; i++)
                   array[i % 1000] = i * 2;           Array.Sort(array);//将数组排序            int location = binarysearch(inputdata, array);//调用二分法 
               if (location >= 0)
               {
                   MessageBox.Show("查找结果:" + location.ToString() + "指针位置:" + /*mid值*/, "查找结果");//如何在此处调用二分法中的mid值
               }
               else
               {
                   data = inputdata--;
                   MessageBox.Show("无此数据!如需查找最接近值请继续“查找”", "查找结果");
               }
           }       private int binarysearch(int data, int[] array)//二分法 
           {
               int low = 0;
               int high = array.Length;
               int mid = 0;
               while (low <= high)
               {
                   mid = (low + high) / 2;
                   if (array[mid] == data)
                       return data;
                   else
                   {
                       if (array[mid] > data)
                       { high = mid - 1; }
                       else if (array[mid] < data)
                       { low = mid + 1; }
                   }
               }
               return -1;
           }
    请问怎样在注释的地方调用显示mid值