當(dāng)前位置:機(jī)電之家首頁 >> PLC技術(shù)>> PLC文案資料 >> PLC試題庫 >> 西門子s7-200plc由“冒泡法”排序算法的逆向思考
西門子s7-200plc由“冒泡法”排序算法的逆向思考

在一些c語言資料上看到,“冒泡法”排序一般是從最后一個(gè)數(shù)據(jù)開始,向地址小的方向相鄰兩個(gè)數(shù)據(jù)比較,并按照從小到大或者從大到小排序的一種算法。在數(shù)據(jù)比較、移動(dòng)的過程中,數(shù)據(jù)的運(yùn)動(dòng),看起來好像水中的氣泡向上運(yùn)動(dòng)。故而稱之為“冒泡法”排序。

“冒泡法”排序,在知道數(shù)據(jù)的起始地址、數(shù)據(jù)個(gè)數(shù)、數(shù)據(jù)類型后,需要算出最后一個(gè)數(shù)據(jù)的地址,并從最后的一個(gè)地址開始運(yùn)算排序。我在想,為什么不能從數(shù)據(jù)的起始地址開始排序呢,如果采用這種“下沉法”排序,還能省去計(jì)算數(shù)據(jù)的結(jié)束地址,程序應(yīng)該會(huì)更簡(jiǎn)潔。于是自己就試著寫了一下“下沉法”排序的程序代碼,并測(cè)試通過。

排序環(huán)境:224cpu,從vb1000開始連續(xù)20個(gè)整數(shù),從小到大排序?!跋鲁练ā迸判蛩惴▍⒖即a如下:

//******************給外循環(huán)體、內(nèi)循環(huán)體的循環(huán)次數(shù)賦初值***********************

ld sm0.0 //開始執(zhí)行從小到大的排序程序

movw 19, lw2 //給外循環(huán)次數(shù)(數(shù)據(jù)個(gè)數(shù)-1)賦初值

movw 19, lw6 //給內(nèi)循環(huán)次數(shù)(數(shù)據(jù)個(gè)數(shù)-1)賦初值

//*******************建立外循環(huán)體并定義排序的其實(shí)地址*****************************

for lw0, +1, lw2 //for外循環(huán)體循執(zhí)行l(wèi)w2次

movd &vb1000, ac1 //將v區(qū)的起始地址賦給ac1,定義排序的起始地址

//**************建立內(nèi)循環(huán)體并開始進(jìn)行相鄰的兩個(gè)數(shù)據(jù)比較、移動(dòng)****************

for lw4, +1, lw6 //for內(nèi)循環(huán)體循執(zhí)行l(wèi)w6次

movd ac1, ac2 //把當(dāng)前ac1里面的地址存儲(chǔ)到ac2里面

+d +2, ac2 //ac2當(dāng)前地址+2,存入ac2

ldw< *ac2, *ac1 //如果ac2指向的地址里面的內(nèi)容小于ac1指向的地址里面的內(nèi)容

movw *ac1, lw8 //那么將當(dāng)前兩個(gè)地址里面的內(nèi)容互換

movw *ac2, lw10 //如果ac2指向的地址里面的內(nèi)容不小于ac1指向的地址里面的內(nèi)容

movw lw8, *ac2 //那么當(dāng)前兩個(gè)地址里面的內(nèi)容保持不變

movw lw10, *ac1 //如果把小于比較指令改成大于比較指令,那么數(shù)據(jù)就是從大到小排序

ld sm0.0

+d +2, ac1 //ac1當(dāng)前地址+2,存入ac1

next //跳轉(zhuǎn)到for內(nèi)循環(huán),如果內(nèi)循環(huán)執(zhí)行結(jié)束,程序往下執(zhí)行

//*******************內(nèi)循環(huán)執(zhí)行結(jié)束,進(jìn)入外循環(huán)執(zhí)行*****************************

decw lw6 //內(nèi)循環(huán)體執(zhí)行結(jié)束,將內(nèi)循環(huán)體的循環(huán)次數(shù)減1

next //跳轉(zhuǎn)到for外循環(huán),如果外循環(huán)執(zhí)行結(jié)束,程序往下執(zhí)行

上面代碼基本采用臨時(shí)變量作運(yùn)算的,其實(shí)還可以將其封裝成一個(gè)子程序,實(shí)現(xiàn)多次調(diào)用。

作者:未知 點(diǎn)擊:493次 [打印] [關(guān)閉] [返回頂部]
本文標(biāo)簽:西門子s7-200plc由“冒泡法”排序算法的逆向思考
* 由于無法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報(bào)酬未能及時(shí)支付,在此深表歉意,請(qǐng)《西門子s7-200plc由“冒泡法”排序算法的逆向思考》相關(guān)權(quán)利人與機(jī)電之家網(wǎng)取得聯(lián)系。
電子樣本

SN系列樣冊(cè)
:鞏經(jīng)理
:13915946763
:南京塞姆泵業(yè)有限公司
個(gè)人求購

張揚(yáng)瓊 【求購】  ABB火檢...  2025-11-27
張雪根 【求購】  固體除垢劑  2025-11-26
趙經(jīng)理 【求購】  變壓器  2025-11-26
羅經(jīng)理 【求購】  巡邏車跟蹤...  2025-11-26
趙經(jīng)理 【求購】  柴油發(fā)電機(jī)  2025-11-26
沈雙 【求購】  柴油過濾紙  2025-11-26
陳經(jīng)理 【求購】  濰柴船用發(fā)...  2025-11-26
 【求購】  移動(dòng)電源  2025-11-25
VIP公司推薦