设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 5176|回复: 16
打印 上一主题 下一主题

[讨论] 【纯讨论】优化一下排序算法

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
跳转到指定楼层
1
发表于 2011-7-18 12:37:25 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
首先要说明一下什么是排序算法。
把一堆数字如
5   6  3   7   9   4  2
这些数字按从小到大的排列成
2  3  4  5  6  7  9

原有的方法我就不说了,懂编程的多少都懂一些。于是我提出一种智能一点的排序方式。

首先 获得 最大值,最小值 2    9

这两个值分别在两个头 ①  ⑦

然后依次遍历剩下的数字。
第一个数  5  
用 (5-2)/(9-2)= 3/7

于是先将5放到3/7的位置上(设法理解 3/7是在 9和2中间,因为2是在0%的位置,9是在100%的位置)

于是排列  2  5  9

第二个数 6
(6-2)/(9-2)= 4/7

于是讲5放到4/7的位置上(因为排列的3个数 于是可以认为2在0% 的位置,5在50%的位置,9在100%的位置所以6应该排在5后面)
检查6是否比50%位置上的数字大,如果小则换位,循环你懂得。
第三个数字3
(3-2)/(9-2)= 1/7
于是排到 33%之前 (因为排了4个数,于是 0%  33%  66%  100%)
2 3 5 9
检查是否比33%位置上的数字大,如果大则换位,循环你懂的。

第四个数字7
(7-2)/(9-2)=5/7 = 71.43%
于是排到 50%之后,75%之前 (因为排列5个数了,0%   25%   50%   75%   100%)
也就是放到3   5之间,
2   3   7   5   9
检查前后大小关系,于是7 和 5换位
2  3  5   7   9

…………
剩下的我就不说了。

其实这就是应用这些数据的大致规律,给一个估计插入位置,就能明显减少不必要的大小对比。
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
182 小时
注册时间
2012-2-11
帖子
233
17
发表于 2012-2-28 16:22:45 | 只看该作者
一般用快排的路过…………
现实中都是*人肉=多路=选择排序……
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

16
发表于 2012-2-4 09:44:17 手机端发表。 | 只看该作者
stl毫无压力。。std::sort
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
767
在线时间
1270 小时
注册时间
2011-2-14
帖子
5589
15
发表于 2012-1-18 15:47:24 | 只看该作者
  1. a = [32423,4232342,342423,4,3,234234,23432432,423432,423445,43,4332432,654,65,76572334,34242,4534]
  2. b = []
  3. a.size.times{
  4. m = a.min
  5. b.push(m)
  6. a.delete(m)
  7. }
  8. a = b
  9. p a
复制代码
个人认为这样就行了,虽然不懂你说的是什么

点评

那还不如干脆a.sort!  发表于 2012-2-28 16:23
回复 支持 反对

使用道具 举报

Lv1.梦旅人

辉瑞中国首席研究员<

梦石
0
星屑
50
在线时间
142 小时
注册时间
2008-1-18
帖子
2129
14
发表于 2012-1-18 15:38:33 | 只看该作者
露珠你的算法是on2的 跟冒泡一个级别的
来6r就是等某位仁兄的巨坑

褴褛着身行无端,囊中羞涩空心酸。
平生几无得意事,倒塔泡面宅寝室。
惟羡隔壁高帅富,雨露春风月夜声。
青丝无处觅其踪,只有硬盘苍井空。
莫云男儿空悲愁,鸿鹄岂不天际游。
坐断天下执鹿首,千百金帛万兜鍪。
夜深忽梦某年月,再见女神欲语迟。
吊丝终有逆袭日,木耳再无回粉时。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
246 小时
注册时间
2011-12-11
帖子
260
13
发表于 2012-1-18 09:53:52 | 只看该作者
……貌似如果能直接碰到内存地址排序能快不少0 0
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2011-6-21
帖子
9
12
发表于 2012-1-14 23:57:58 | 只看该作者
我也是排序法
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

11
发表于 2012-1-14 13:35:16 | 只看该作者
bogo-sort表示这些算法都是渣渣。。

点评

原来是无限猴子 T_T  发表于 2012-2-28 16:25
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
38 小时
注册时间
2011-1-11
帖子
44
10
发表于 2011-8-29 18:09:40 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1332
在线时间
675 小时
注册时间
2009-11-11
帖子
2790
9
发表于 2011-8-14 21:53:05 | 只看该作者
阿龙君 发表于 2011-8-13 14:43
鄙视LS,超时吧。归并排序现在最好吧,虽然写起来不简单= =不过最优化呢,内存都2G+了
另外我现实排列数字 ...

用了这么久冒泡觉的没区别,真太卡就优化下呗,现在的电脑又不是286,LS乃挖坟啦

嘿。嘿。嘿
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-5 23:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表