51单片机循环程序实验

发布时间:2023年12月24日

一、实验内容

1.基本要求

掌握排序算法;实现对五个字节数据(初值为本人班级学号后五位,每一位填入一个字节中)从大到小排序;

2.扩展要求

实现两种不同的排序算法,并比较各自的排序效率;

3.思考要求

思考是否可以实现快速排序,该怎样实现。

二.理论分析或算法分析

设置数据为 ?5? 4? 2? 2? 7

假设内部数据30H:? 5? 4? 2? 2? 7

首先要确认怎么排序,有两种算法;

第一种是直接排序法:

(1)刚开始内部数据30H存放了5 4 2 2 7五个字节的数据,从大到小排序,先取出第一个数,假设它是最大数,从第二个数据直到最后一个数据开始比较,直到结束,第一个数和第二个数比较,假设成立,那么第一个数还是原来的数,让现在的第一个数与第三个数进行比较,如果成立则不换位置,如果假设不成立则进行换位置,写到第一个的位置,那么第一次的比较就成为7 4 2 2 5;

(2)第二次从第二个字节开始,取出第二个数为后四个的最大数,4? 和 ?2比较,假设成立,则不进行交换位置,然后4? 和 ?2 进行比较,假设成立,不进行交换位置, ?接下来,4和7进行比较,假设不成立,进行交换位置,第二次比较的结果为7 2 2 4;

(3)第三次进行比较,假设2是最大数,然后2 和 2进行比较, 假设成立,不交换位置,接下来2 和 4进行比较,假设不成立,则交换位置,第三次比较的结果为 4? 2? 2;

(4)第四次进行比较,假设2 为最大数,2 与2进行比较,最后比较结果为 2? 2;

(5)最后一个字节2不需要进行比较,最后的排序为7 5 4 2 2。

因为本人学号为54227所以设置内部数据为以下:

内部数据30H: ?5? 4? 2? 2? 7

? ? ? ? ? ? ? ? ? ? ? ? ? ?7? 4? 2? 2? 5

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?5? 2? 2? 4

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4? 2? 2

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2? 2

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2

第二种是冒泡排序法:

(1)首先5 和 4 进行比较,如果后面是最小数,则假设成立,不进行交换,否则进行交换,4是小的数,不进行交换,4? 和 ?2进行比较,2是小的数,不进行交换,2和2进行比较,是相等,不是小的数,不进行交换,2和7进行比较,2是小的数,进行交换,第一次排序的结果为5 4 2 7 2;

(2)5和4满足排序规则,不进行交换,4和2满足排序规则,不进行交换,2和7不满足排序规则,进行交换,第二次排序的结果为5? 4? 7? 2;

(3)5和4进行比较,满足排序规则,不进行交换,4和7进行比较,不满足排序规则,进行交换,第三次排序结果为 5? 7? 4;

(4)5和7进行比较,不满足排序规则,进行交换,第四次排序结果为7 5;

(5)最后一次不需要进行比较,最后的排序为7 5 4 2 2。

内部数据30H:5? 4? 2? 2? 7

? ? ? ? ? ? ? ? ? ? ? ??5? 4? 2? 7? 2

? ? ? ? ? ? ? ? ? ? ? ? 5? 4? 7? 2

? ? ? ? ? ? ? ? ? ? ? ? 5? 7? 4

? ? ? ? ? ? ? ? ? ? ? ? 7? 5

? ? ? ? ? ? ? ? ? ? ? ? 7

三.实现方法

使用寄存器间接寻址;

源代码

直接排序代码:

四.实验结果分析

执行结果验证:输入五个数据5 4? 2? 2? 7

执行前的结果

测试过程

执行后的结果

五.结论

直接排序法是从大到小排序,找到最大数放在第一个位置;而冒泡排序法是从小到大排序,找到最小数放在最后一个位置。冒泡排序比直接排序更优,因为冒泡排序最后的几位已经拍好序,可以提前结束。

?? 在本次实验中,学会了如何进行排序,复习了两种排序算法,进一步巩固了自己所学的基础知识。要多多进行思考,在以前学过的算法中,对算法有所遗忘,所以,进行多多练习,可以孰能生巧。

思考题:思考是否可以实现快速排序,该怎样实现。

可以实现快速排序,在实现中,首先取数据区的一个数据进行参照,然后从数据区中按顺序与参照数据进行对比,比它小的放到它位置的前面,比它大的数据放到它的后面,然后再按这个思路进行它左边数据的排序和右边数据的排序,进行循环,直到左右数据剩下一个数据为止。

文章来源:https://blog.csdn.net/m0_58837398/article/details/135125778
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。