新手请教c语言冒泡排序法代码法

每日登录:+1西币&+1积分
&下次自动登录
绑定第三方账号登录 & & &
扫描二维码登录支持中心移动端
获取动态密码
售前文档售后文档热门视频系列热门版区售后服务概述自助服务帮助信息
You are here:
关于冒泡法
热点活动:
置评已完成,谢谢!
您现在可以为该问题添加标签。
关于冒泡法 - 已解决问题
最近在论坛学习冒泡排序,自己尝试写了下,特把程序贴出来,让让大神看看有什么问题,DB1之前的数据如图2,经过FC1排序之后数据数据如图3,但是我理解经过FC1,应该只能把最大的数排到最后,并不能把所有的数按从小到大排列(基于当前这个程序),希望大神帮我分析一&&&&&&&A&&&&&#AA&&&&&&JCN&&&M004&&&&&&L&&&&&0&&&&&&T&&&&&#TEMP0&&&&&&T&&&&&#TEMP1&&&&&&OPN&&&DB&&&&&1&&&&&&LAR1&&P#0.0&&&&&&L&&&&&9M005:&T&&&&&#TEMP0&&&&&&L&&&&&DBW&[AR1,P#0.0]&&&&&&L&&&&&DBW&[AR1,P#2.0]&&&&&&&=I&&&&&&&&&JCN&&&M002&&&&&&L&&&&&DBW&[AR1,P#2.0]&&&&&&T&&&&&#TEMP1&&&&&&L&&&&&DBW&[AR1,P#0.0]&&&&&&T&&&&&DBW&[AR1,P#2.0]&&&&&&L&&&&&#TEMP1&&&&&&T&&&&&DBW&[AR1,P#0.0]M002:&+AR1&&P#2.0&&&&&&L&&&&&#TEMP0&&&&&&LOOP&&M005M004:&NOP&&&0
问题补充:艾星落尘&&阿鸣&&两位大师,你俩误会我的意思了,我想请教,为什么我仿真FC1这个程序就可以实现冒泡排序,我理解不能实现的,但是为什么仿真结果是正确的,你俩写的程序我可以看懂,
图片说明:
产品版区:
悬赏西币:4 | 解决时间: 15:44:32 | 提问者:& - 学长&nbsp&nbsp第2级
问题ID:152097
A&&&&&#AA&&&//开始排序&&&&&&JCN&&&M004&&&&&&L&&&&&0&&&&&&T&&&&&#TEMP0&&&&&&T&&&&&#TEMP1&//初始化数据&&&&&&OPN&&&DB&&&&&1&//打开DB块&&&&&&LAR1&&P#0.0&//加载开始地址,A&&&&&&L&&&&&9&&//循环次数M005:&T&&&&&#TEMP0&&&&&&L&&&&&DBW&[AR1,P#0.0]&//判断&A和A+2地址大小&&&&&&L&&&&&DBW&[AR1,P#2.0]&&&&&&&=I&&&&&&&&&&JCN&&&M002&&//如果A&A+2不用排序&&&&&&L&&&&&DBW&[AR1,P#2.0]&//如果大于了,进行排序&&&&&&T&&&&&#TEMP1&&//temp1&=&A+2&&&&&&L&&&&&DBW&[AR1,P#0.0]&&&&&&&T&&&&&DBW&[AR1,P#2.0]&//A+2=A&&&&&&L&&&&&#TEMP1&&&&&&T&&&&&DBW&[AR1,P#0.0]&//A=temp1M002:&+AR1&&P#2.0&&//地址加2,A=A+2&&&&&&L&&&&&#TEMP0&&&&&&LOOP&&M005&&//temp0-1,继续循环M004:&NOP&&&0这个需要多循环几次吧,PLC一个周期排不完,需要好几个周期才行#aa什么时候被复位?
资深顾问&nbsp&nbsp第13级&
以下网友赞了您的问题:
rain god,f1968,艾星落尘,西门子300新手,xue lang,guoj1980,hjg
填写您的评论...
提问者对于答案的评价:谢谢,可以这样理解吗,#AA这个信号一直有,你的意思一个扫描周期,排序不了,有可能需要九个扫描周期,才能正确排序(从小到大),而如果使用艾星落尘和阿鸣两位大师的方法,一个扫描周期就可以排列出来?,在这里也特别感谢艾星落尘和阿鸣。。。
最佳答案作者回复:是的,你可以仿真一下试试仿真器带有每个周期执行的功能,有扫描模式~旁边有个+1,点一下就是扫描一个周期
&不好意思,艾星落尘,最佳答案选完之后,才看到你的答案,你的解释已经解决我的疑惑,再次感谢三位大神的回答
12/12/:20 PM
更多相关问题
本版精华问答
等待您来回答
作者/最新回复
最后回复时间
转帖:一个编制简便的冒泡法程序:1、整数型数据排序:假定十个数据,放在DB1中,安放顺序如下:DBW0DBW2…DBW18下面是西门子的程序OPN&&&DB&&&&1&&&&&&&&&&&&&&&&&/////打开DB1这个数据块&&&&&&L&&&&&10&&////装载10到MB0中,因为有十个数据,要进行十次排序,9次也可以的LL0:&&T&&&&&MB&&&&0&&&&&&L&&&&&P#0.0&&&////装载地址指针,这是关键,不要搞错了&&&&&&LAR1&&&&&&&&L&&&&&9LL1:&&T&&&&&MB&&&&2&&&////内部循环,进行9次,直到把最大值排到最后&&&&&&L&&&&&DBW&[AR1,P#0.0]&&&&&&L&&&&&DBW&[AR1,P#2.0]&&&&&&&R&&&&&&&&&&JC&&&&LL2&&&&&&&&&&////比较前后两个值,如果前面大于后面的,则前后数据交换&&&&&&L&&&&&DBW&[AR1,P#0.0]&&&&&&T&&&&&#m_temp&&&&&&L&&&&&DBW&[AR1,P#2.0]&&&&&&T&&&&&DBW&[AR1,P#0.0]&&&&&&L&&&&&#m_temp&&&&&&T&&&&&DBW&[AR1,P#2.0]LL2:&&+AR1&&P#2.0&&&&&////指针自动进行加2,因为是整数,所以要跳过2个字节&&&&&&L&&&&&MB&&&&2&&&&&&LOOP&&LL1&&&&&&&///这个指令自动的将A寄存器里的值减1&&&&&&L&&&&&MB&&&&0LOOP&&LL02、实数型数据排序:假定十个数据,放在DB1中,安放顺序如下:DBD0DBD4…DBD36下面是西门子的程序OPN&&&DB&&&&1&&&&&&&&&&&&&&&&&/////打开DB1这个数据块&&&&&&L&&&&&10&&////装载10到MB0中,因为有十个数据,要进行十次排序,9次也可以的LL0:&&T&&&&&MB&&&&0&&&&&&L&&&&&P#0.0&&&////装载地址指针,这是关键,不要搞错了&&&&&&LAR1&&&&&&&&L&&&&&9LL1:&&T&&&&&MB&&&&2&&&////内部循环,进行9次,直到把最大值排到最后&&&&&&L&&&&&DBD&[AR1,P#0.0]&&&&&&L&&&&&DBD&[AR1,P#4.0]&&&&&&&R&&&&&&&&&&JC&&&&LL2&&&&&&&&&&////比较前后两个值,如果前面大于后面的,则前后数据交换&&&&&&L&&&&&DBD&[AR1,P#0.0]&&&&&&T&&&&&#m_temp&&&&&&L&&&&&DBD&[AR1,P#4.0]&&&&&&T&&&&&DBD&[AR1,P#0.0]&&&&&&L&&&&&#m_temp&&&&&&T&&&&&DBD&[AR1,P#4.0]LL2:&&+AR1&&P#4.0&&&&&////指针自动进行加4,因为是浮点数,所以要跳过4个字节&&&&&&L&&&&&MB&&&&2&&&&&&LOOP&&LL1&&&&&&&///这个指令自动的将A寄存器里的值减1&&&&&&L&&&&&MB&&&&0LOOP&&LL0
- 大师&nbsp&nbsp第17级
& 14:53:24
因为你用了一次的循环当然只能做一次了,还需要一个循环;&&&&&&A&&&&&#AA&&&&&&JCN&&&M004&&&&&&L&&&&&0&&&&&&T&&&&&#TEMP0&&&&&&T&&&&&#TEMP1&&&&&&OPN&&&DB&&&&&1&&&&&&L&&&&&9&&&&&&&&&&&&&&&&&&&&&//增加M006:&T&&&&&#TEMP2&&&&&&//增加&&&&&&LAR1&&P#0.0&&&&&&L&&&&&9M005:&T&&&&&#TEMP0&&&&&&L&&&&&DBW&[AR1,P#0.0]&&&&&&L&&&&&DBW&[AR1,P#2.0]&&&&&&&=I&&&&&&&&&JCN&&&M002&&&&&&L&&&&&DBW&[AR1,P#2.0]&&&&&&T&&&&&#TEMP1&&&&&&L&&&&&DBW&[AR1,P#0.0]&&&&&&T&&&&&DBW&[AR1,P#2.0]&&&&&&L&&&&&#TEMP1&&&&&&T&&&&&DBW&[AR1,P#0.0]M002:&+AR1&&P#2.0&&&&&&L&&&&&#TEMP0&&&&&&LOOP&&M005&&&&&&L&&&&&#TEMP2&&&&&&&&&&&&//增加&&&&&&LOOP&&M006&&&&&&&&&&&&//增加M004:&NOP&&&0补充:我们写的这些程序是在一个周期内就完成了排序,而你写的呢,要运行很多个周期才能完成的;毕竟,CPU是在不断的周期运行,当完成一步后数字的位置发生了变化,下一个扫描周期又会在改变了的数列的情况下在接着执行。模拟器里有按步执行的,不妨试试看。
图片说明:&&
- 高级工程师&nbsp&nbsp第11级
& 15:36:24
上一页1下一页&
扫描打开手机版
支持中心新发布“关注”功能了!实时查看彼此动态,更方便地进行技术交流。
不管是“关注”与“被关注”,相信都是一个美好的开始!
还有多重奖励派送,快快行动起来吧!
20秒帮我们优化支持中心!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
欢迎您来到找答案
在“找答案”,已有超过7万个被解决的技术问题供您参考!
西门子技术专家亲自把关!常规的,简单的问题,在这里您都可以找到答案!
遇到了问题,就来“找答案”提问。
点击搜索框右侧的提问按钮,只需2步就能成功提交问题!分分钟就有无数大侠前来帮你。
在“找答案”每天都有大量的新问题。
别犹豫,只需要点击问题下方的“我要回答”就能参与。答题不光有积分相送,也会给您积攒大侠人气。
“找答案”定期开展各种有奖活动期待您的参与。
更有机会参加西门子高端用户峰会。领略西门子的博大精深!新手请教,野调找底的方法?因为底不平,好像很难做到一饵悬,一饵触底吧。【钓鱼吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:730,182贴子:
新手请教,野调找底的方法?因为收藏
新手请教,野调找底的方法?因为底不平,好像很难做到一饵悬,一饵触底吧。
登录百度帐号推荐应用

我要回帖

更多关于 c语言冒泡法 的文章

 

随机推荐