1
iloahz 2013-09-11 10:23:13 +08:00 1
先将每类控件单独排序,这个在数据库那层做应该很方便吧,然后跑多路归并就好了。这样应该是逻辑最简洁的了,O(nlogn + nlogk)的时间复杂度,O(n)的额外空间,其中k为控件类别数。
个人更偏向这样: 1. 扫一遍得到每类控件的最小位置 2. 自定义compare函数: 1. 若最小位置不同,返回最小位置小的 2. 返回位置小的 3. 跑快排 这样时间复杂度是O(n + nlogn),O(k)的额外空间,而且目测实际运行比前面那个算法快。 |
2
jianghu52 OP @iloahz 恩,看起来确实有点快。我sql不是很强,一直不是很敢用sql完成业务逻辑。都是放在php这边做的。我试试看用sql的思路来排序看看
|
3
yyai3 2013-09-11 11:27:21 +08:00 1
尝试:SELECT c1 FROM t1 order by left(c1,4),c1
|