社区
C++ 语言
帖子详情
求按照 时间和距离的权重比例进行排序算法,有啥好思路,谢谢
rpg_kill
2012-05-02 11:01:07
如题: 对一个表 按照 时间*50% 和 距离*50% 进行排序。
这个表中记录了用户最近登入的时间和距离。我要获取距离最近并且用户最近登入的人。
...全文
562
13
打赏
收藏
求按照 时间和距离的权重比例进行排序算法,有啥好思路,谢谢
如题: 对一个表 按照 时间*50% 和 距离*50% 进行排序。 这个表中记录了用户最近登入的时间和距离。我要获取距离最近并且用户最近登入的人。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wnagwie
2014-07-09
打赏
举报
回复
对距离排序做了些优化,可以参考 http://1.qiangqiangblog.sinaapp.com/?p=19
ri_aje
2012-05-02
打赏
举报
回复
[Quote=引用 10 楼 的回复:]
是一个数学问题,正在想怎么定义这个函数。
引用 8 楼 的回复:
引用 4 楼 的回复:
我是要根据时间和距离得出一个最有值,然后按照这个值排序。我的需求是要获取最近登入的用户而且距离比较近的用户。
引用 1 楼 的回复:
你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?
啊,那是设计一个函数(数学概念,非程序) f:R^……
[/Quote]
你可以先对所有时间和距离做归一化。然后将所有用户登录的距离和时间是做二维平面中的点,构造 kd-tree,然后查询该 时间-距离 二维平面中某点的 k 个最近邻居,其中 k 为整数,你自己定义,某点也是你自己定义。比如你主楼说的 “距离最近并且用户最近登入的人”,假定你想查找前 100 的这样的用户,那就是 kd-tree 查询(当前时间,当前地点)的 100 个最近邻居。
rpg_kill
2012-05-02
打赏
举报
回复
是一个数学问题,正在想怎么定义这个函数。
[Quote=引用 8 楼 的回复:]
引用 4 楼 的回复:
我是要根据时间和距离得出一个最有值,然后按照这个值排序。我的需求是要获取最近登入的用户而且距离比较近的用户。
引用 1 楼 的回复:
你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?
啊,那是设计一个函数(数学概念,非程序) f:R^2->R,使得对输入时间和距离,f(t,d),给出一个可以用于排序的值,对吧?
……
[/Quote]
rpg_kill
2012-05-02
打赏
举报
回复
是啊,就是想找一个这样的算法!
[Quote=引用 7 楼 的回复:]
关键看你怎么换算,假定距离单位米
10秒10米,8秒13米,13秒9米等等那个优先?实际上只要你算法想好了,了直接对按照这个算法计算后的结果排序即可
[/Quote]
ri_aje
2012-05-02
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
我是要根据时间和距离得出一个最有值,然后按照这个值排序。我的需求是要获取最近登入的用户而且距离比较近的用户。
引用 1 楼 的回复:
你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?
[/Quote]
啊,那是设计一个函数(数学概念,非程序) f:R^2->R,使得对输入时间和距离,f(t,d),给出一个可以用于排序的值,对吧?
那这是数学问题,你先说说这种函数的定义吧。
nice_cxf
2012-05-02
打赏
举报
回复
关键看你怎么换算,假定距离单位米
10秒10米,8秒13米,13秒9米等等那个优先?实际上只要你算法想好了,了直接对按照这个算法计算后的结果排序即可
hen_hao_ji
2012-05-02
打赏
举报
回复
先 对 时间排序,如果时间相等 就对 距离排序,这样行吗?
rpg_kill
2012-05-02
打赏
举报
回复
曾想过用贪心算法,但是感觉还不行。
rpg_kill
2012-05-02
打赏
举报
回复
我是要根据时间和距离得出一个最有值,然后按照这个值排序。我的需求是要获取最近登入的用户而且距离比较近的用户。
[Quote=引用 1 楼 的回复:]
你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?
[/Quote]
hen_hao_ji
2012-05-02
打赏
举报
回复
++同问
[Quote=引用 1 楼 的回复:]
你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?
[/Quote]
nice_cxf
2012-05-02
打赏
举报
回复
时间和距离怎么换算?1米=多少秒?
ri_aje
2012-05-02
打赏
举报
回复
你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?
rpg_kill
2012-05-02
打赏
举报
回复
谢谢,我先试试看。
[Quote=引用 11 楼 的回复:]
引用 10 楼 的回复:
是一个数学问题,正在想怎么定义这个函数。
引用 8 楼 的回复:
引用 4 楼 的回复:
我是要根据时间和距离得出一个最有值,然后按照这个值排序。我的需求是要获取最近登入的用户而且距离比较近的用户。
引用 1 楼 的回复:
你是要先按时间排序,时间相同的再按距离排序;还是要时间排一个序,距离再排一个序?
啊,那是设计一个……
[/Quote]
十大经典
排序算法
详解(三)-堆排序,计数排序,桶排序,基数排序
十大经典
排序算法
-堆排序,计数排序,桶排序,基数排序 1-堆排序 算法思想: 算法图解: 示例代码: 在这里插入代码片 复杂度分析: 2-计数排序 算法思想: 算法图解: 示例代码: 在这里插入代码片 复杂度分析: 3-桶排序 算法思想: 算法图解: 示例代码: 在这里插入代码片 复杂度分析: 4-基数排序 算法思想: 算法图解: 示例代码: 在这里插入代码片 复杂度分析: ...
内部
排序算法
全面总结
本文的主要内容是关于八大
排序算法
,以及其衍生算法的总结,系统的分析了直接插入排序,快速排序等重要
排序算法
的
思路
,代码实现等。
基本的
排序算法
算法思想:将相隔为d(d=n/2)的元素
进行
插入排序,然后d=d/2在
进行
插入排序,直到d=1。这样咋一看好像和之前的排序没啥区别,甚至更加繁琐,但本质是为了让原本无序的数组在一定范围内变得相对有序,这样移动元素时会减少移动的次数,从而减少
时间
复杂度,所以它的
时间
复杂度其实和数组的无序程度有关,数组越无序,
时间
复杂度越低,数组越有序,
时间
复杂度越高,在n^1.3~n^2之间代码如下d >= 1;d /= 2)//这里的排序要好好琢磨一下,是按照顺序每次将tmp和与它相隔d的倍数的元素
进行
排序。
10大
排序算法
之八:基数排序【稳定】,复杂度小,不常用基数排序,除非面试官特殊申明
1)基数排序的核心思想,就是利用特定位(比如个位)统计0--9的个数,然后用累加和数组c倒桶入help,最后转移到arr,完成排序 2)难,是难了点,但是这种桶排序的思想,就是这样,烦,面试官没有特殊要
求
,不要玩桶排序(基数排序和计数排序),我们只玩比较的排序。
5大经典
排序算法
在淘宝“有好货”场景的实践
本文将介绍有好货推荐场景下的
排序算法
。有好货作为淘宝典型的内容导购场景,产品的定位是帮助消费升级人群发现口碑好货。排序作为推荐场景链路中重要环节,很大程度决定了推荐效率。过去一年,我们在排...
C++ 语言
65,209
社区成员
250,517
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章