枫 枫 Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-05 #1 在一个N*M的数组里,如何用最快的速度,最少的步骤,找到数组里的一个值?
C cozo Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-05 #2 知道行和列的值不就搞定了。这是最快的。[] 如果你的意思是根据值找坐标的话,应该把数组排序,然后用二分法就可以了。
U ugvanxk Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-05 #3 tstringlist.addobject 加进去,用他本身的查找,可能会快点
枫 枫 Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-05 #5 to cozo, 对不起,可能我没有说清楚,我的意思就是要值的坐标。 这个数组是记录型的,所以你说的“应该把数组排序,然后用二分法就可以了。” 如何实现呢? to ugvanxk, 如果数组里的值是记录型值,这也能适用吗? to 魔鬼大师, 请问如何确定n和m值呢?
to cozo, 对不起,可能我没有说清楚,我的意思就是要值的坐标。 这个数组是记录型的,所以你说的“应该把数组排序,然后用二分法就可以了。” 如何实现呢? to ugvanxk, 如果数组里的值是记录型值,这也能适用吗? to 魔鬼大师, 请问如何确定n和m值呢?
W wenming Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-05 #9 我想用折半查找可能会好点吧!以前数据结构学得不好,说错了不要怪,而且我不懂delphi,所以也写不出算法出来了。 这应该是一个二维数组,用1 to n/2 和1 to m/2.还有n/2+1 to n 和m/2+1 to m做数组的下标去查找唔知道得唔得啊!
我想用折半查找可能会好点吧!以前数据结构学得不好,说错了不要怪,而且我不懂delphi,所以也写不出算法出来了。 这应该是一个二维数组,用1 to n/2 和1 to m/2.还有n/2+1 to n 和m/2+1 to m做数组的下标去查找唔知道得唔得啊!
枫 枫 Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-06 #10 to wenming, 你的想法是对的,只是我想找一个最优的算法,
超 超级番茄 Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-06 #11 当数据很多的时候,快速排序+二分发搜索应该是最快的了。
D DarwinZhang Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-10 #12 如果是有序表,可以用二分法; 如果不是有序的,不要排序,直接查找。
凡 凡1979 Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-10 #13 你插入数据有没有什么规律呢!!? 我认为这点比较重要点
枫 枫 Unregistered / Unconfirmed GUEST, unregistred user! 2002-06-11 #15 这个问题我解决了。 1、在赋值的时候,就已排序。 2、用二分法查找数据。 谢谢楼上各位,散分。