二分法在循环列表中查找数据 本帖最后由 fishrd 于 2010-10-26 12:02:25 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1) while (low != high) 改成 while(low <= high) return 0; 改成 return -1;//表示找不到2) MessageBox private void button1_Click(object sender, EventArgs e)//开始查找 { int data = id; int[] array= {1,2,3}; int location = search(id,array); if(location>=0) { MessageBox.Show("找到的提示"); } else { MessageBox.Show("找不到的提示"); } } 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 id; public Form1() { InitializeComponent(); } private void textBox1_TextChanged(object sender, EventArgs e)//输入查找数据 { id = Convert.ToInt32(textBox1.Text); } private void button1_Click(object sender, EventArgs e)//开始查找 { int data = id; int[] array = { 1, 2, 3 ,4};//数组列表 int location = search(id, array); if (location >= 0) { MessageBox.Show("....", "查找结果");//显示查找到的数据 } else { MessageBox.Show("表中不存在您要查找的数据", "查找结果"); } } private int search(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 && array[low] < data) || (array[mid] < data && array[high] < data)) { high = mid - 1; } else if ((array[mid] < data && array[high] > data) || (array[mid] > data && array[low] > data)) { low = mid + 1; } } } return -1; } } }修改后的代码 请问如何才能将查找出来的data在messagebox中显示出来 你的Data是int型的数据,MessageBox里也只有转成string 再显示咯private void button1_Click(object sender, EventArgs e)//开始查找 { int data = id; int[] array = { 1, 2, 3 ,4};//数组列表 int location = search(id, array); if (location >= 0) { MessageBox.Show(location.ToString()+被查找出来!, "查找结果");//显示查找到的数据 } else { MessageBox.Show("表中不存在您要查找的数据", "查找结果"); } } linq from q in arr where ..查找很方便二分法数据结构上算法很全面 求一个算法 MDI窗体下的问题 C#如何调用C++开发的dll中的函数 翻译????? datagridview传值问题? 有谁用过XtraPrinting控件 怎样查找XML串中指定节点; c#尝试读取或写入受保护的内存。这通常指示其他内存已损坏。 谁能给个C#实现木马的例子(最好有注释)! 如何点击一个按钮打开一个窗口的同时将现有窗体关闭 谁能帮我写个公共类! 路径优化,100分献上。
return 0; 改成 return -1;//表示找不到2) MessageBox
private void button1_Click(object sender, EventArgs e)//开始查找
{
int data = id;
int[] array= {1,2,3};
int location = search(id,array);
if(location>=0)
{
MessageBox.Show("找到的提示");
}
else
{
MessageBox.Show("找不到的提示");
}
}
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 id; public Form1()
{
InitializeComponent();
} private void textBox1_TextChanged(object sender, EventArgs e)//输入查找数据
{
id = Convert.ToInt32(textBox1.Text);
} private void button1_Click(object sender, EventArgs e)//开始查找
{
int data = id;
int[] array = { 1, 2, 3 ,4};//数组列表
int location = search(id, array);
if (location >= 0)
{
MessageBox.Show("....", "查找结果");//显示查找到的数据
}
else
{
MessageBox.Show("表中不存在您要查找的数据", "查找结果");
}
} private int search(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 && array[low] < data) || (array[mid] < data && array[high] < data))
{ high = mid - 1; }
else if ((array[mid] < data && array[high] > data) || (array[mid] > data && array[low] > data))
{ low = mid + 1; }
}
}
return -1;
}
}
}
修改后的代码 请问如何才能将查找出来的data在messagebox中显示出来
{
int data = id;
int[] array = { 1, 2, 3 ,4};//数组列表
int location = search(id, array);
if (location >= 0)
{
MessageBox.Show(location.ToString()+被查找出来!, "查找结果");//显示查找到的数据
}
else
{
MessageBox.Show("表中不存在您要查找的数据", "查找结果");
}
}
二分法数据结构上算法很全面