冒泡法排序:
冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序。

但是这种冒泡法排序却有很大的弊端
可以看见在第一次排序后虽然最大的数字被移动到了最右的位置,但是这轮排序对其他的数字并没有造成有益的影响,甚至第二大的数字8还被向左移了一位,这样的排序在数据量比较小的时候体现差异不大,但是如果数据量很大的情况下,数据交换的次数将会有很多,而且是不必要的,所以对传统冒泡法进行了优化。

优化的冒泡法:
从第一位开始,第一位和第二位比较,若第一位比第二位大,则两数交换,然后比较第二位和倒数第三位,以此类推。第一次循环结束后,这组数中最大的值被移到最右段,这样第二次则不需要比较最后一位,只比较到倒数第二位即可,第三次比较到倒数第二位,以此类推。

汇编代码实现:
例:
用冒泡法使数组按从小到大排序,并将排序结果存放到附加段中。

data segment
x db 32,-43,76,95,-1,-78,127,-128,-125,88
data ends
extra segment
y db 10 dup (?)
extra ends
code segment
assume cs:code,ds:data,es:extra
start:mov ax,datamov ds,axmov cx,9mov di,-1
outside: mov si,offset xadd si,8
inside:mov al,[si]mov bl,[si+1]cmp al,bljle jumpxchg al,bl
jump:  mov [si],almov [si+1],bldec sipush sicmp si,dijz channelpop sijmp inside
channel:pop siinc diloop outsidemov cx,10
get:   mov bx,offset yadd bx,cxdec bxmov al,[bx]mov es:[bx],alloop getmov ah,4hint 21h
code ends
end start

汇编实现冒泡法排序及优化相关推荐

  1. 51单片机汇编_冒泡法排序

    用汇编实现经典排序算法冒泡法 算法流程图: 算法原理图: 从大到小: ORG 0000h LJMP MAIN ORG 0030H MAIN: MOV 30H,#10H MOV 31H,#02h MOV ...

  2. c语言冒泡法排序实验报告,四川大学微机原理冒泡法排序实验报告.doc

    四川大学微机原理冒泡法排序实验报告四川大学微机原理冒泡法排序实验报告 <微机原理与接口技术实验报告> 学 院: 电气信息学院 班 级: 电力 老 师: 学 号: 姓 名: 目 录 实验目的 ...

  3. C语言——冒泡法排序应用

    #include <stdio.h> #include <stdlib.h> int main()/*有int main 就会有return 0;如果是void main ,就 ...

  4. PTA 基础编程题目集 7-27 冒泡法排序 C语言

    PTA 基础编程题目集 7-27 冒泡法排序 C语言 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们.通过一遍扫描,则最后一 ...

  5. 7-27 冒泡法排序 (C语言)

    7-27 冒泡法排序 (20 分)将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们.通过一遍扫描,则最后一个元素必定是最大的元 ...

  6. 从头学习linux C 冒泡法排序

    下面是一个简单冒泡法排序,代码如下: [cpp] view plaincopy #include <stdio.h> #define LEN 10 int main() { int a,i ...

  7. C语言 数组排序 – 冒泡法排序 - C语言零基础入门教程

    目录 一.简介 二.数组冒泡法排序原理 三.数组冒泡法排序实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 经过前面的学习, ...

  8. 7-27 冒泡法排序 (20 分)

    7-27 冒泡法排序 (20 分) 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们.通过一遍扫描,则最后一个元素必定是最大的 ...

  9. 汇编语言---冒泡法排序

    汇编语言冒泡法排序 配置环境 编辑程序 运行程序 后续 配置环境 首先双击下载程序进行下载.(没有安装程序的,可以下载我为大家准备的安装文件.) 不会安装的可以看一下文件 将debug.exe放入C盘 ...

  10. 微课|中学生可以这样学Python(例8.22):冒泡法排序

    适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第8章  常用算法的Python实现 例8.22  冒泡法排序 京东购买链接:https://it ...

最新文章

  1. exception java doc,Javadoc和RuntimeException
  2. Longest Common Substring
  3. 表的插入、更新、删除、合并操作_20_通过表关联删除多张表
  4. BJUT算法设计与分析考试真题 无答案
  5. pcu tps_Mac版Microsoft Office 2011重新定义您的TPS报告体验
  6. html5 地图效果,html5 echarts图表插件炫光的分布地图动画特效
  7. python序列中是否包含某个元素
  8. 中审咨询政府行业远程接入解决方案
  9. Codeforces Round #296 (Div. 2) C. Glass Carving [ set+multiset ]
  10. 还有这种操作?浅析为什么要看源码
  11. 为什么我们应该学马化腾,而不是马云
  12. java poi excel模板变量_Java Web之POI操作Excel2016模板
  13. 试用Google Earth 5中文版(GPS方面)
  14. 仿真器和模拟器的区别
  15. 阿里物联网平台(IOT)——业务服务器获取阿里iot平台接入设备的实时设备采集数据
  16. Python从入门到实战,我觉着拥有这三本书很有必要
  17. jquery html添加背景图片,jquery动态更换设置背景图的方法
  18. 微信公众号删除cookie失败,cookie设置了过期时间不管用,微信公众号cookie比较诡异,删不掉,解决办法,原生JS封装cookie统一操作删除cookie,读取cookie,删除cookie
  19. 虚拟主机、VPS、云服务器三者的区别
  20. TarsGo新版本发布,支持protobuf,zipkin和自定义插件

热门文章

  1. MySQL WARN: Establishing SSL connection ...... is not recommended.
  2. 人人都该懂点儿TCP---ACK延缓(转)
  3. verlet-rope-latest 的扩展—— BYRope
  4. 操作WORD配置说明
  5. Visio 图案填充-设置形状格式
  6. 机器学习算法难学吗?一文带你掌握机器学习知识要点
  7. 干货 | 大公司机器学习算法的面试经验
  8. 字节还有打游戏、听音乐这种神仙工作?
  9. 【每日算法Day 71】面试官想考我这道位运算题,结果我给出了三种解法
  10. NLP学习—15.多模态研究方向及在文本分类、文本生成的应用