求按照 时间和距离的权重比例进行排序算法,有啥好思路,谢谢

时间:2021-07-13 00:23:37
如题: 对一个表 按照 时间*50% 和 距离*50% 进行排序。

这个表中记录了用户最近登入的时间和距离。我要获取距离最近并且用户最近登入的人。

13 个解决方案

#1


你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?

#2


时间和距离怎么换算?1米=多少秒?

#3


++同问
引用 1 楼  的回复:
你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?

#4


我是要根据时间和距离得出一个最有值,然后按照这个值排序。我的需求是要获取最近登入的用户而且距离比较近的用户。

引用 1 楼  的回复:
你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?

#5


曾想过用贪心算法,但是感觉还不行。

#6


先 对 时间排序,如果时间相等 就对 距离排序,这样行吗?

#7


关键看你怎么换算,假定距离单位米
10秒10米,8秒13米,13秒9米等等那个优先?实际上只要你算法想好了,了直接对按照这个算法计算后的结果排序即可

#8


引用 4 楼  的回复:
我是要根据时间和距离得出一个最有值,然后按照这个值排序。我的需求是要获取最近登入的用户而且距离比较近的用户。

引用 1 楼  的回复:

你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?

啊,那是设计一个函数(数学概念,非程序) f:R^2->R,使得对输入时间和距离,f(t,d),给出一个可以用于排序的值,对吧?
那这是数学问题,你先说说这种函数的定义吧。

#9


是啊,就是想找一个这样的算法!
引用 7 楼  的回复:
关键看你怎么换算,假定距离单位米
10秒10米,8秒13米,13秒9米等等那个优先?实际上只要你算法想好了,了直接对按照这个算法计算后的结果排序即可

#10


是一个数学问题,正在想怎么定义这个函数。

引用 8 楼  的回复:
引用 4 楼  的回复:

我是要根据时间和距离得出一个最有值,然后按照这个值排序。我的需求是要获取最近登入的用户而且距离比较近的用户。

引用 1 楼  的回复:

你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?

啊,那是设计一个函数(数学概念,非程序) f:R^2->R,使得对输入时间和距离,f(t,d),给出一个可以用于排序的值,对吧?
……

#11


引用 10 楼  的回复:
是一个数学问题,正在想怎么定义这个函数。

引用 8 楼  的回复:

引用 4 楼  的回复:

我是要根据时间和距离得出一个最有值,然后按照这个值排序。我的需求是要获取最近登入的用户而且距离比较近的用户。

引用 1 楼  的回复:

你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?

啊,那是设计一个函数(数学概念,非程序) f:R^……

你可以先对所有时间和距离做归一化。然后将所有用户登录的距离和时间是做二维平面中的点,构造 kd-tree,然后查询该 时间-距离 二维平面中某点的 k 个最近邻居,其中 k 为整数,你自己定义,某点也是你自己定义。比如你主楼说的 “距离最近并且用户最近登入的人”,假定你想查找前 100 的这样的用户,那就是 kd-tree 查询(当前时间,当前地点)的 100 个最近邻居。

#12


谢谢,我先试试看。
引用 11 楼  的回复:
引用 10 楼  的回复:

是一个数学问题,正在想怎么定义这个函数。

引用 8 楼  的回复:

引用 4 楼  的回复:

我是要根据时间和距离得出一个最有值,然后按照这个值排序。我的需求是要获取最近登入的用户而且距离比较近的用户。

引用 1 楼  的回复:

你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?

啊,那是设计一个……

#13


对距离排序做了些优化,可以参考   http://1.qiangqiangblog.sinaapp.com/?p=19

#1


你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?

#2


时间和距离怎么换算?1米=多少秒?

#3


++同问
引用 1 楼  的回复:
你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?

#4


我是要根据时间和距离得出一个最有值,然后按照这个值排序。我的需求是要获取最近登入的用户而且距离比较近的用户。

引用 1 楼  的回复:
你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?

#5


曾想过用贪心算法,但是感觉还不行。

#6


先 对 时间排序,如果时间相等 就对 距离排序,这样行吗?

#7


关键看你怎么换算,假定距离单位米
10秒10米,8秒13米,13秒9米等等那个优先?实际上只要你算法想好了,了直接对按照这个算法计算后的结果排序即可

#8


引用 4 楼  的回复:
我是要根据时间和距离得出一个最有值,然后按照这个值排序。我的需求是要获取最近登入的用户而且距离比较近的用户。

引用 1 楼  的回复:

你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?

啊,那是设计一个函数(数学概念,非程序) f:R^2->R,使得对输入时间和距离,f(t,d),给出一个可以用于排序的值,对吧?
那这是数学问题,你先说说这种函数的定义吧。

#9


是啊,就是想找一个这样的算法!
引用 7 楼  的回复:
关键看你怎么换算,假定距离单位米
10秒10米,8秒13米,13秒9米等等那个优先?实际上只要你算法想好了,了直接对按照这个算法计算后的结果排序即可

#10


是一个数学问题,正在想怎么定义这个函数。

引用 8 楼  的回复:
引用 4 楼  的回复:

我是要根据时间和距离得出一个最有值,然后按照这个值排序。我的需求是要获取最近登入的用户而且距离比较近的用户。

引用 1 楼  的回复:

你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?

啊,那是设计一个函数(数学概念,非程序) f:R^2->R,使得对输入时间和距离,f(t,d),给出一个可以用于排序的值,对吧?
……

#11


引用 10 楼  的回复:
是一个数学问题,正在想怎么定义这个函数。

引用 8 楼  的回复:

引用 4 楼  的回复:

我是要根据时间和距离得出一个最有值,然后按照这个值排序。我的需求是要获取最近登入的用户而且距离比较近的用户。

引用 1 楼  的回复:

你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?

啊,那是设计一个函数(数学概念,非程序) f:R^……

你可以先对所有时间和距离做归一化。然后将所有用户登录的距离和时间是做二维平面中的点,构造 kd-tree,然后查询该 时间-距离 二维平面中某点的 k 个最近邻居,其中 k 为整数,你自己定义,某点也是你自己定义。比如你主楼说的 “距离最近并且用户最近登入的人”,假定你想查找前 100 的这样的用户,那就是 kd-tree 查询(当前时间,当前地点)的 100 个最近邻居。

#12


谢谢,我先试试看。
引用 11 楼  的回复:
引用 10 楼  的回复:

是一个数学问题,正在想怎么定义这个函数。

引用 8 楼  的回复:

引用 4 楼  的回复:

我是要根据时间和距离得出一个最有值,然后按照这个值排序。我的需求是要获取最近登入的用户而且距离比较近的用户。

引用 1 楼  的回复:

你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?

啊,那是设计一个……

#13


对距离排序做了些优化,可以参考   http://1.qiangqiangblog.sinaapp.com/?p=19