Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11413903
  • 博文数量: 1293
  • 博客积分: 13501
  • 博客等级: 上将
  • 技术积分: 17974
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 18:11
文章分类

全部博文(1293)

文章存档

2019年(1)

2018年(1)

2016年(118)

2015年(257)

2014年(128)

2013年(222)

2012年(229)

2011年(337)

分类:

2012-12-15 09:27:47

一、二分查找原理说明:


某人手中拿着一个从1到100(有序的)里的一个数,要猜中其是什么数。

比较好的方法是:

(1)、先100/2=50,判断在大于50还是小于50;

(2)、如果小于50,(0+50)/2,判断在大于25还是小于25;

          如果大于50,(50+100)/2,判断在大于25还是小于25;

……


  1. private int RbinSearch_For_Array(int value, int lower_row_index, int upper_row_index)
  2. {
  3.     if (lower_row_index > upper_row_index)
  4.         return -1;
  5.     else
  6.     {
  7.         int row_index = 0;
  8.         int tmp_userid = 0;
  9.         row_index = (int)(upper_row_index + lower_row_index) / 2;
  10.         tmp_num = Convert.ToInt32( dataGridView1.Rows[row_index].Cells[x].Value);

  11.         if (value< tmp_num )
  12.         {
  13.             return RbinSearch_For_Array(value, lower_row_index, row_index - 1);
  14.         }
  15.         else if (value == tmp_num )
  16.             return row_index;
  17.         else
  18.             return RbinSearch_For_Array(value, row_index + 1, upper_row_index);
  19.     }
  20. }


2、顺序查找算法。


    最突出的查找类型就是从记录集的开始处顺次遍历每条记录,直到找到所要的记录或者是

到达数据集的末尾。这就是所谓的顺序查找。顺序查找(也被称为线性查找)是非常容易实现

的。从数组的起始处开始,把每个访问到的数组元素依次和所要查找的数值进行比较。如果找

到匹配的数据项,就结束查找操作。如果遍历到数组的末尾仍没有产生匹配,那么就说明此数

值不在数组内。


  1. bool SeqSearch(int[] arr, int sValue)
  2. {
  3.      for (int index = 0; index < arr.Length ; index++) //小bug
  4.      if (arr[index] == sValue)
  5.           return true;
  6.      return false;
  7. }



阅读(4568) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~