微机原理与技术接口 实验三 循环结构
🌴 2022.5.26 早八 实验三
实验三 循环结构
1.1 实验要求
熟悉emu8086仿真系统,实现连续地址的内存数据访问,用两种方法实现对五个字从大到小排序
扩展要求:用冒泡法实现快排,计算不同方法的复杂度
1.2 理论分析
选择排序,冒泡排序建议先去搜一下自己熟悉的语言是怎么编写的,看懂算法思路再写汇编会容易很多
选择排序:第一次从R[0]~R[n-1]中选取最大值,与R[0]交换,第二次从R[1]~R[n-1]中选取最大值,与R[1]交换,….,第i次从R[i-1]~R[n-1]中选取最大值,与R[i-1]交换,…..,第n-1次从R[n-2]~R[n-1]中选取最大值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从大到小排列的有序序列。
排序前:9 3 6 4 2
第一次:9 3 6 4 2
第二次:9 6 3 4 2
第三次:9 6 4 3 2
第四次:9 6 4 3 2
冒泡排序:重复地遍历要排序的数列,第一次比较R[0]~R[n-1]中相邻两个元素是否满足R[i]>R[i+1]如果不满足就交换,第二次比较R[0]R[n-2], ….,第n-1次比较R[0]R[1],一共比较n-1次
排序前:2 3 6 4 9
第一次:3 6 4 9 2
第二次:6 4 9 3 2
第三次:6 9 4 3 2
第四次:9 6 4 3 2
扩展要求:冒泡法实现快排,即在冒泡排序的基础上,设置一个标志位,如果当前内循环没有做交换,说明排序正确,直接跳出循环
排序前:9 3 6 4 2
第一次:9 6 4 3 2
第二次:9 6 4 3 2, 没有做交换,直接跳出循环结束程序
1.3 汇编语言
💻提示:所有实验源码已在Github整理
选择排序
MOV CX,5-1 ;选择排序,外循环N-1次 |
冒泡排序
MOV CX,5-1 ;冒泡排序,外循环N-1次 |
冒泡法快速排序
MOV CX,5-1 ;冒泡法快速排序,外循环N-1次 |
1.4 实验结果
快速排序
冒泡排序,LOP1执行了n-1次
冒泡法快速排序,LP1在执行第二次循环结束后,跳出程序
输出后均为
不同方法的复杂度
| 算法 | 时间复杂度 |
|---|---|
| 选择排序 | O(N^2^) |
| 冒泡排序 | O(N^2^) |
| 冒泡法快速排序 | O(N) |
思考内容
- 冒泡法属于快速排序的原因
如果相邻两个数的大小满足条件不需要排序,可以直接跳出程序。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 张时贰!
评论






