回复:关于“冒泡法”排序程序的逆向思考。

yanxiao

版主

  • 帖子

    12143
  • 精华

    46
  • 被关注

    183

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 2012-07-28 22:25:30

4楼

既然N侠想把这个排序程序封装成一个子程序,我建议进一步对循环体做一下优化。
基于这样的前提:排序是对word进行,因此一次就可把队列中的一对数取进来比较,需要交换时,再交叉存下去。
设AC1中存放指针,循环体如下:
LD SM0.0
MOVD *AC1, LD10 // 取进一对相邻的数
LDW< LW10, LW12 // 大值冒上来,小值沉下去
MOVW LW12, *AC1 // 若上面条件成立,交叉存回
+I 2, AC1
MOVW LW10, *AC1
NOT
+I 2, AC1 // 若上面没有交换发生,地址+2

下面的写法是等效的,就是指针只在一个地方增加:
LD SM0.0
MOVD *AC1, LD10 // 取进一对相邻的数
LDW< LW10, LW12 // 大值冒上来,小值沉下去
MOVW LW12, *AC1 // 若上面条件成立,交叉存回
LD SM0.0
+I 2, AC1
ALD
MOVW LW10, *AC1
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。