BinarySearch - C#实现

原创 2007年09月25日 11:29:00
最近又重新开始学习算法,努力用C#把算法导论中的算法写一遍,并且调试通过,前段时间写的第一个算法就是BinarySearch, 同时还写了几个生成随机数组的函数,个人感觉用C#写算法的话,表达的比较清楚,毕竟算法主要讲究的是逻辑。不过这个算法我居然写了3个小时才通过各种各样的随机测试。狂汗啊!

public static Int32 BinSearch(Int32[] InputArray, Int32 Target)
{
    
if (!Common.CheckSortOrder(InputArray, false))
        
throw new ArgumentOutOfRangeException("InputArray""Input array is in not non-decreasing order!");
    
    Int32 left 
= 0;
    Int32 right 
= InputArray.Length - 1;
    Int32 middle 
= 0;

    
while(left <= right)
    
{
        middle 
= (left + right) / 2;

        
if (InputArray[middle] < Target) left = middle + 1;
        
else if (InputArray[middle] > Target) right = middle - 1
        
else return middle;
    }


    
return -1;
}

教训就是在算法执行之前的review何其重要,不过可以边调试边review, 毕竟visual studio的调试可视化在写C#程序的时候实在是太强了。还有如果能在调试逻辑复杂的递归程序的时候,如果能利用.net 方便的基础设施进行trace的话也非常有助于发现逻辑中的错误。

其实.net基础类库中已经提供了常用算法的实现,我们不需要手动实现,但是亲手编写并且调试算法的话,可以大幅度提高思维以及调试能力。

List<T>线性查找和二分查找BinarySearch效率分析

今天因为要用到List的查找功能,所以写了一段测试代码,测试线性查找和二分查找的性能差距,以决定选择哪种查找方式。 线性查找:Contains,Find,IndexOf都是线性查找。 二分查找:B...
  • igaoshang
  • igaoshang
  • 2015年06月24日 18:08
  • 698

Java的binarySearch

public static int binarySearch(Object[] a, Object key) ...{    int low = 0;    int high = a.length-1...
  • longronglin
  • longronglin
  • 2007年04月19日 19:36
  • 3544

C# list使用方法

List泛型集合集合是OOP中的一个重要概念,C#中对集合的全面支持更是该语言的精华之一。为什么要用泛型集合?在C# 2.0之前,主要可以通过两种方式实现集合:a.使用ArrayList直接将对象放入...
  • u014351782
  • u014351782
  • 2015年06月19日 10:23
  • 1645

STL之二分查找 (Binary search in STL)

正确区分不同的查找算法count,find,binary_search,lower_bound,upper_bound,equal_range  本文是对Effective STL第45条的一个总结...
  • Non_Cease
  • Non_Cease
  • 2012年09月17日 21:52
  • 9046

二分查找函数binary_search

函数模版: templatetypename T>int  binary_search (T arr[],  int size,  T target) ;参数说明:T: 模版参数arr :  数组首地...
  • touzani
  • touzani
  • 2007年05月26日 23:57
  • 6043

BinarySearch的java语言实现

二叉树搜索思想如下:一般情况下我们只对在已排序好的数组中进行查找,若没有进行排序,我们必须首先对其进行排序,否则算法将是无效的; 已知数组arr[l..r],和姚查找的数x 第一步:取得数...
  • u010412719
  • u010412719
  • 2015年05月31日 20:29
  • 967

关于binarySearch返回值为负数

import java.util.*; public class Test { public static void main(String[] args) { String[] colors ...
  • smmzhaone
  • smmzhaone
  • 2014年08月29日 20:38
  • 1465

Binary search

Binary search is a famous question in algorithm.For a given sorted array (ascending order) and a tar...
  • zjj2015
  • zjj2015
  • 2015年12月02日 21:55
  • 69

数据结构与算法:Binary search

package com.java.algorithm; public class BinarySearch { public int binarySearch(int a[], int x) ...
  • liuzongxi
  • liuzongxi
  • 2015年03月30日 21:00
  • 380

binarySearch()方法详解 java

再看TIJ 的时候书中提到   未排序的数组使用binaryserach会产生很严重错误    一直想不通后来在网上了一下得到一下结果 binarySearch()方法提供了多种重载形式,用于满足...
  • songlang90
  • songlang90
  • 2015年07月12日 10:26
  • 5993
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BinarySearch - C#实现
举报原因:
原因补充:

(最多只允许输入30个字)