当前位置: 首页 > article >正文

【SCL】实现简单算法--冒泡排序

使用SCL语言实现一个冒泡排序的简单算法

文章目录

目录

文章目录

前言

二、实现排序

1.读取存储器地址(PEEK)指令

2.编写程序

总结


前言

本文我们来一起使用SCL来实现一个简单的算法——冒泡排序;它可以对少量数据进行从小到大或从大到小排序;另外它也是一种比较简单容易理解的一种排序方法。


一、冒泡排序

下面是在360摘抄的冒泡排序的含义和原理:





 

二、实现排序

 这里我们在博图中建立编写环境然后创建数组和变量;这里我们可以直接定义一个起始值,然后排序;也可以输入相应的值,然后再排序;

1.读取存储器地址(PEEK)指令

我们建立两个数组,一个存放初始值,一个存放排序值;这里我们想要在初始数组里面输入数值,在排序数组里面显示排序后的值 ;我们要用到scl中的读取存储器地址指令来完成;

第1个参数是选择读取哪一个区的地址,其中:16#81是输入,16#82是输出,16#83是位存储区  ,16#84是DB数据块  ;

  • 16#81:Input          

  • 16#82:Output    

  • 16#83:位存储区  

  • 16#84:DB              

 第2个参数是DB块的序号,如果是数据块DB1,那么序号就是1,以此类推;

第3个参数是待读取的地址,这里我是用的数据块,所以地址是它的偏移量; 

 


2.编写程序

首先获取我们初始数组的数值传到排序数组中;#NP_TEMP 是一个整型变量,主要是用来获取数据块的偏移地址,每次循环+=2是因为是16位,也就是两个字节,对应相应的偏移量;

#NP_TEMP := 0;
FOR #i := 0 TO #len DO
    "数据块_1".排序值[#i] := WORD_TO_INT(PEEK_WORD(area := b#16#84, dbNumber := 1, byteOffset := #NP_TEMP));
    #NP_TEMP := #NP_TEMP + 2;
END_FOR;

 

 这里再使用两个FOR循环,嵌套使用,对数组内的数值进行遍历,如果第一个大于第二个,就将第一个和第二个交换,然后以此类推;

 第2for循环中每次减J是因为循环过一次之后最大的一个已经找到并排在最后了,所以第2次循环只要循环8次就够了,相同的道理,再一次循环之后仅次于最大的数也找到了,所以这里才每次-J;

FOR #j := 0 TO #len-1 DO
    FOR #m := 0 TO #len - 1-#j  DO
        IF "数据块_1".排序值[#m] > "数据块_1".排序值[#m + 1] THEN
            #t := "数据块_1".排序值[#m];
            "数据块_1".排序值[#m] := "数据块_1".排序值[#m + 1];
            "数据块_1".排序值[#m + 1] := #t;
        END_IF;
    END_FOR;
END_FOR;

 效果:

 





总结

以上就是今天的所有内容啦!


http://www.kler.cn/a/1413.html

相关文章:

  • 如何在 Ubuntu 22.04 上安装 Caddy Web 服务器教程
  • 宝塔安装mongodb后,写脚本监控运行状态,关闭后自动重启
  • ios脚本巨魔商店多巴胺越狱基本操作教程
  • MySQL - 子查询和相关子查询详解
  • 【权限管理】Apache Shiro学习教程
  • 『SQLite』如何使用索引来查询数据?
  • 前端面试题
  • 系统架构:经典三层架构
  • 【C++】命名空间
  • Word自动化办公 python-docx
  • 【数据结构】Java实现单链表
  • 【LeetCode每日一题】——165.比较版本号
  • Vector的扩容机制
  • idea中使用maven进行多模块打包部署时jar包中无依赖的问题(示例:jar包才5k,且无法正常启动)
  • 两年外包生涯,感觉自己废了一半....
  • 2.机器学习笔记第二周
  • 2023年江苏省职业院校技能大赛中职网络安全赛项试卷-学生组-任务书
  • openssh 9.0p1版本和openssl1.1.1o版本部署实操
  • 网络总结知识点(网络工程师必备)四
  • 多重背包的单调队列优化
  • 【大数据】Hive系列之- Hive-DML 数据操作
  • java项目发布到Linux
  • 考研数二第五讲 无穷小阶数问题的求解
  • 10.0自定义SystemUI下拉状态栏和通知栏视图(六)之监听系统通知
  • 你是真的“C”——结构体中鲜有人知的“秘密”
  • 模拟实现STL容器之vector