一、二分查找原理说明:
某人手中拿着一个从1到100(有序的)里的一个数,要猜中其是什么数。
比较好的方法是:
(1)、先100/2=50,判断在大于50还是小于50;
(2)、如果小于50,(0+50)/2,判断在大于25还是小于25;
如果大于50,(50+100)/2,判断在大于25还是小于25;
……
- private int RbinSearch_For_Array(int value, int lower_row_index, int upper_row_index)
- {
- if (lower_row_index > upper_row_index)
- return -1;
- else
- {
- int row_index = 0;
- int tmp_userid = 0;
- row_index = (int)(upper_row_index + lower_row_index) / 2;
- tmp_num = Convert.ToInt32( dataGridView1.Rows[row_index].Cells[x].Value);
- if (value< tmp_num )
- {
- return RbinSearch_For_Array(value, lower_row_index, row_index - 1);
- }
- else if (value == tmp_num )
- return row_index;
- else
- return RbinSearch_For_Array(value, row_index + 1, upper_row_index);
- }
- }
2、顺序查找算法。
最突出的查找类型就是从记录集的开始处顺次遍历每条记录,直到找到所要的记录或者是
到达数据集的末尾。这就是所谓的顺序查找。顺序查找(也被称为线性查找)是非常容易实现
的。从数组的起始处开始,把每个访问到的数组元素依次和所要查找的数值进行比较。如果找
到匹配的数据项,就结束查找操作。如果遍历到数组的末尾仍没有产生匹配,那么就说明此数
值不在数组内。
- bool SeqSearch(int[] arr, int sValue)
- {
- for (int index = 0; index < arr.Length ; index++) //小bug
- if (arr[index] == sValue)
- return true;
- return false;
- }
阅读(5014) | 评论(0) | 转发(0) |