继"睡眠排序"后, 我突发奇想写了个改良版的......

2019-02-26 01:07:54 +08:00
 Adlered

原理就是......
从-99999 循环到 99999
然后每循环一次, 在每次循环其中再遍历一次数组, 如果数组里含有这个数, 就打印出来......
我是不是该吃药了? 效率还莫名的不错......
不但支持负数, 还能自由修改排序范围......

public class 智障排序 {
  public static void main(String[] args) {
   int[] nums = {1,4,2,5,3,9,123412,12,5112,126,-12};
    for (int i = -99999; i < 99999; i++) {
     for (int j:nums) {
     if (j == i)
      System.out.println(i);
    }
   }
  }
}

4997 次点击
所在节点    程序员
26 条回复
zzj0311
2019-02-26 14:00:50 +08:00
你是怎么发现它效率不错的。。
luckyx
2019-02-26 14:30:23 +08:00
比冒泡差多了吧... 实用性还不广
tabris17
2019-02-26 14:31:28 +08:00
out of bound
Kirscheis
2019-02-26 14:39:39 +08:00
你这样实现效率太低了,(max-min)*n 的时间。。不过可以用空间换时间变成基数排序,两次循环就可以

for i in nums
{
arr[(uint64) i] = 1;
}

for i in len(arr)
{
if arr[i] == 1 print((int64) i);
}

时间是 n,不过最差可能需要 2^64 位的内存
Adlered
2019-02-26 16:47:38 +08:00
@jzq526 哈哈哈 我的意思是相比较睡眠算法来讲效率要高得多~ 娱乐一下
jzq526
2019-02-26 17:48:03 +08:00
@fcten 确实,我只看了外层循环就写回复了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/538700

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX