C# 二分法(折半)查找数组最大最小值? 忘记了!请高人指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //二分法查找元素k下标,如果元素存在,则返回其下标,不存在,返回-1 //调用时候,数组必须是已经从小到大已经排序好的数组 public static int BinarySearch(T[] a, int n,T k) { int low, high, mid; low = 0; high = n - 1; mid = (low + high) / 2; while (low <= high) { // if (a[mid] < k) low = mid + 1; if (a[mid].CompareTo(k) < 0) low = mid + 1; else if (a[mid].CompareTo( k)>0) high = mid - 1; else break; //找到了 mid = (low + high) / 2; } if (low > high) mid = -1; //没有找到 return mid; } //end BinarySeach lz,net类库中的集合类大都是带排序的,为什么非要自己写一个呢?你是不是要完成老是布置的作业啊,呵呵? binarysearch前提就是已经排序完成。最简单的就是遍历数组,记录最大值最小值 比较当前值 并更新,直到数据结束!貌似有个不用O(n)的算法。忘记了 C#中后台或者电脑登陆名 紧急求助,关于非托管DLL调用的参数说明 怎样计算dataread的数据总数 哪里有免费的WebServices 天气预报? nVS2005类中namespace问题 webserice与winform的app.config 我开了一个线程,然后让它去显示datagrid里面的内容,出现了异常的情况,下面是我的代码 不懂OO 谁给介绍下? 朋友幫幫我把!我快哭了 在c#中如何打开word文档? 关于一个页面查询的问题 做个调查,如果不考虑性能,数组从0开始好,还是从1开始好?
//调用时候,数组必须是已经从小到大已经排序好的数组
public static int BinarySearch(T[] a, int n,T k)
{
int low, high, mid; low = 0;
high = n - 1;
mid = (low + high) / 2; while (low <= high)
{
// if (a[mid] < k) low = mid + 1;
if (a[mid].CompareTo(k) < 0) low = mid + 1; else if (a[mid].CompareTo( k)>0) high = mid - 1; else break; //找到了 mid = (low + high) / 2; } if (low > high) mid = -1; //没有找到 return mid; } //end BinarySeach
你是不是要完成老是布置的作业啊,呵呵?
最简单的就是遍历数组,记录最大值最小值 比较当前值 并更新,直到数据结束!
貌似有个不用O(n)的算法。忘记了