请求一个算法(100分)

  • 主题发起人 主题发起人
  • 开始时间 开始时间

Unregistered / Unconfirmed
GUEST, unregistred user!
在一个N*M的数组里,如何用最快的速度,最少的步骤,找到数组里的一个值?
 
知道行和列的值不就搞定了。这是最快的。[:D]
如果你的意思是根据值找坐标的话,应该把数组排序,然后用二分法就可以了。
 
tstringlist.addobject
加进去,用他本身的查找,可能会快点
 
a[n,m]即可搞定
 
to cozo,
对不起,可能我没有说清楚,我的意思就是要值的坐标。
这个数组是记录型的,所以你说的“应该把数组排序,然后用二分法就可以了。”
如何实现呢?

to ugvanxk,
如果数组里的值是记录型值,这也能适用吗?
to 魔鬼大师,
请问如何确定n和m值呢?
 
有,只有用循环的方法
 
to flysand,
肯定还有别的方法的
 
用快速排序法
 
我想用折半查找可能会好点吧!以前数据结构学得不好,说错了不要怪,而且我不懂delphi,所以也写不出算法出来了。
这应该是一个二维数组,用1 to n/2 和1 to m/2.还有n/2+1 to n 和m/2+1 to m做数组的下标去查找唔知道得唔得啊!
 
to wenming,
你的想法是对的,只是我想找一个最优的算法,
 
当数据很多的时候,快速排序+二分发搜索应该是最快的了。
 
如果是有序表,可以用二分法;
如果不是有序的,不要排序,直接查找。
 
你插入数据有没有什么规律呢!!?
我认为这点比较重要点
 
同意楼上的,有因才有果
 
这个问题我解决了。
1、在赋值的时候,就已排序。
2、用二分法查找数据。

谢谢楼上各位,散分。
 
后退
顶部