代码如下,设定为只能查找偶数
现在要求当为奇数时输出结果为和它最接近的数(假定为上一位: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;
}
}
}
现在要求当为奇数时输出结果为和它最接近的数(假定为上一位: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;
}
}
}
解决方案 »
- 如何将阿里巴巴接口返回来的JSON数据转化为C#的对像? 急求
- ERP系统中的POS架构问题
- C#
- 如何telnet到一台服务器上执行ftp指令
- 怎样获得状态栏上有哪些打开的窗口
- 在线等,急!急!!急!!! COMBOX帮定字段后,怎样让它选定指定的项?
- ToBase64Transform类和System.Convert.ToBase64String类区别在哪里?
- 无法解决这问题就怒挂东南枝了
- 请教象Word的toolbar上字体和字颜色两种控件怎么做?
- 有没有IE地址栏这样的控件?
- 裝了 SharpDevelop 後,需要裝 Mono 2.8 嗎?
- C# winform程序多个版本安装在同一目录下,尽快帮我哦
现在请问如何实现 当查找结果不存在里输出低一位的那个数
{
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值