欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 654|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

插入排序算法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:342822 發(fā)表于 2025-8-5 14:29 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
'------------------------------------------------------------------------
' 這個(gè)程序演示了插入排序算法
' 我們可以實(shí)現(xiàn)從低到高排序
' 也可以實(shí)現(xiàn)從高到低排序
' 該算法可以對(duì)任何數(shù)值型數(shù)組進(jìn)行排序(不支持字符串)
'------------------------------------------------------------------------

$regfile = "m8def.dat"                                 ' 指定使用的微控制器型號(hào)文件

$crystal = 8000000                                       ' 使用的晶振頻率(16MHz)
$baud = 9600                                             ' 使用的波特率
$hwstack = 32                                             ' 硬件堆棧大小
$swstack = 32                                            ' 軟件堆棧大小
$framesize = 32                                          ' 幀大小
Dim Onlongs(17) As Long                                   ' 待排序的數(shù)組,根據(jù)需要使用Long/Word/Byte類型
Dim X As Byte                                             ' 循環(huán)計(jì)數(shù)器

' 聲明子程序
Declare Sub Arraysortasc()                                ' 升序排序
Declare Sub Arraysortdec()                                ' 降序排序

'---用于測(cè)試的示例數(shù)據(jù)---
Onlongs(1) = 270
Onlongs(2) = 120
Onlongs(3) = 99
Onlongs(4) = 1452
Onlongs(5) = 978
Onlongs(6) = 22
Onlongs(7) = 180
Onlongs(8) = 721
Onlongs(9) = 622

Print "排序開(kāi)始>"                                           ' 打印排序開(kāi)始提示
Waitms 10                                                 ' 等待10毫秒

Call Arraysortasc                                         ' 調(diào)用升序排序子程序
Print "排序升序結(jié)果:"                                            ' 打印升序排序完成提示
For X = 1 To 9                                            ' 循環(huán)打印排序后的數(shù)組
   print Onlongs(x) ; "-";
Next X
print                                                     ' 換行
print
print "升序轉(zhuǎn)為降序"
Call Arraysortdec                                         ' 調(diào)用降序排序子程序
Print " 降序排序"                                           ' 打印降序排序完成提示

For X = 1 To 9                                            ' 循環(huán)打印排序后的數(shù)組
   print Onlongs(x) ; "-";
Next X

End                                                       ' 程序結(jié)束

'----------- 使用插入排序算法對(duì)Long類型數(shù)組進(jìn)行排序,其他類型變量也可使用 -----------

Sub Arraysortasc()
   Local Al As Long                                       ' 用于存儲(chǔ)當(dāng)前待插入元素的臨時(shí)變量
   Local I As Byte                                        ' 外層循環(huán)計(jì)數(shù)器
   Local J As Byte                                        ' 內(nèi)層循環(huán)計(jì)數(shù)器
   Local Z As Byte                                        ' 用于打印數(shù)組的計(jì)數(shù)器

   For I = 2 To 9                                         ' 從第二個(gè)元素開(kāi)始遍歷數(shù)組
      Al = Onlongs(i)                                     ' 保存當(dāng)前元素值
      J = I                                               ' 初始化內(nèi)層循環(huán)計(jì)數(shù)器
      ' 尋找合適的插入位置
      While J > 1 And Onlongs(j -1) > Al                  ' 當(dāng)前元素比前一個(gè)元素小時(shí)
         Onlongs(j) = Onlongs(j - 1)                     ' 將前一個(gè)元素后移
         J = J - 1                                        ' 繼續(xù)向前比較

         ' 打印排序過(guò)程(調(diào)試用)
         For Z = 1 To 9
            print Onlongs(z) ; "-" ;
Waitms 200
         Next
        Waitms 200                                     ' 等待2秒便于觀察
         print                                            ' 換行
      Wend
      Onlongs(j) = Al                                     ' 將當(dāng)前元素插入到正確位置
   Next
End Sub


Sub Arraysortdec()
   ' 降序排序?qū)崿F(xiàn),與升序類似只是比較條件相反
   Local Al As Long                                       ' 用于存儲(chǔ)當(dāng)前待插入元素的臨時(shí)變量
   Local I As Byte                                        ' 外層循環(huán)計(jì)數(shù)器
   Local J As Byte                                        ' 內(nèi)層循環(huán)計(jì)數(shù)器
   Local Z As Byte                                        ' 用于打印數(shù)組的計(jì)數(shù)器

   For I = 1 To 9                                         ' 從第一個(gè)元素開(kāi)始遍歷數(shù)組
      Al = Onlongs(i)                                     ' 保存當(dāng)前元素值
      J = I                                               ' 初始化內(nèi)層循環(huán)計(jì)數(shù)器
      ' 尋找合適的插入位置
      While J > 1 And Onlongs(j -1) < Al                  ' 當(dāng)前元素比前一個(gè)元素大時(shí)
         Onlongs(j) = Onlongs(j - 1)                     ' 將前一個(gè)元素后移
         J = J - 1                                       ' 繼續(xù)向前比較

         ' 打印排序過(guò)程(調(diào)試用)
         For Z = 1 To 9
            print Onlongs(z) ; "-" ;
         Next
         Wait 2                                         ' 等待2秒便于觀察
         print                                            ' 換行
      Wend
      Onlongs(j) = Al                                     ' 將當(dāng)前元素插入到正確位置
   Next
End Sub




評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1157301 發(fā)表于 2025-8-5 17:16 | 只看該作者
好懷念的排序,以前跟同學(xué)設(shè)計(jì)了一個(gè)SLG游戲,就用到這個(gè)排序法記錄移動(dòng)路徑。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表