社区
C#
帖子详情
C# 二分法(折半)查找数组最大最小值?
思嘉
2011-07-18 11:10:59
忘记了!请高人指点
...全文
403
8
打赏
收藏
C# 二分法(折半)查找数组最大最小值?
忘记了!请高人指点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sdl2005lyx
2011-07-18
打赏
举报
回复
lz,net类库中的集合类大都是带排序的,为什么非要自己写一个呢?
你是不是要完成老是布置的作业啊,呵呵。。。?
flyerwing
2011-07-18
打赏
举报
回复
直接LINQ.MAX就OK了.
qiuruonan
2011-07-18
打赏
举报
回复
//二分法查找元素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
bdmh
2011-07-18
打赏
举报
回复
二分法是要去有序数列,不能是无序的,代码,百度找吧
xuexiaodong2009
2011-07-18
打赏
举报
回复
[Quote=引用 1 楼 gomoku 的回复:]
不需要二分法。
如果已经排过序,第一个和最后一个就是最大或最小值。
如果没有排过序,则直接遍历一次。因为每个元素都要检查一次,不然怎么知道它是不是最大最小值。
[/Quote]
如果已经排过序,第一个和最后一个就是最大或最小值。
如果没有排过序,则直接遍历一次。因为每个元素都要检查一次,不然怎么知道它是不是最大最小值。
二分法(折半的前提就是已经排过序了
gomoku
2011-07-18
打赏
举报
回复
不需要二分法。
如果已经排过序,第一个和最后一个就是最大或最小值。
如果没有排过序,则直接遍历一次。因为每个元素都要检查一次,不然怎么知道它是不是最大最小值。
Tragedy
2011-07-18
打赏
举报
回复
排序 取第一个和最后一个 即最大、最小
TimZhuFaith
2011-07-18
打赏
举报
回复
binarysearch前提就是已经排序完成。。。。
最简单的就是遍历数组,记录最大值最小值 比较当前值 并更新,直到数据结束!
貌似有个不用O(n)的算法。忘记了
c#
寻找最优解示例
c#
写的三种寻找最优解的算法;分别是格点法,单峰区间进退法,和黄金分割法,适合初学者学习使用
一维
数组
一维
数组
找
最大
值 Getmax(int a[],int n) 选择排序 selectsort(int a[],int n) 冒泡排序 bubblesort(int a[],int n)
折半
查找
某元素的位置(
二分法
查找
) binarysearch(int a[],int n) 找
最大
值 int Getmax(int a[], int n) { int pos, temp; pos ...
论学二分
查找
的感悟
二分算法应该是算法海洋里比较简单的一个算法了吧。 但是我却花了两周多的时间才摸到了点皮毛 不过从无到有,总算是从一个算法小小白变成了小白,还是挺兴奋的。 不敢说已经踏进算法之门,但勉强算是看见了那恢弘的轮廓。 希望那些和我一样,走在路上的,以及准备动身的人,能够坚持走下去,走近,走进。 门内有你我所愿之光景。 跑偏了跑偏了,言归正传,说说我对二分
查找
的总结。 一、二分
查找
的基础概念 首先,老生常谈,二分
查找
也成
折半
查找
(Binary Search),是一种效率较高的
查找
方法,但是二.
python语言
折半
查找
_
c#
折半
查找
法实现代码
] { , , , , , , , , , , , , , , , , , , , }; , i; string j, k; , ); ) { k = String.Format("未找到{0}", x); } else { ; i < ; i++) { ) { j = String.Format(); break; } } } find方法如下: int find(int[] a, int...
C语言设计从键盘输入10个数存入
数组
A,将A数按升序排列存入
数组
B,用
二分法
在B中
查找
元素X,输出X在B中的位置,如果未找到,给出相应提示信息
1.采用升序法和
折半
查找
法。首先定义大小为10的整型
数组
a和b,再定义整型变量i,j,k,temp,min,x,n,m并且给n,m赋初值0,9。2. 通过for循环将键盘输入的数依次赋给a的10个元素。3.采用for循环,i+1赋值给k,
数组
下标i赋值给min。
C#
111,123
社区成员
642,536
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章