用汇编语言与C语言实验其他排序,用汇编语言实现数据排序.doc

用汇编语言实现数据排序

摘要:汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。本文主要讨论如何利用汇编语言实现计算机程序设计中排序这种重要运算。

关键词:汇编语言;排序;冒泡排序

中图分类号:TP313 文献标识码:A文章编号:1007-9599 (2011) 16-0000-01

Sort Data with Assembly Language

Ren Hong,Wang Yunxia

(Information Technology Department of Xuanhua Science and Technology College,Zhangjiakou075100,China)

Abstract:The assembly language is a computer can provide to users the fastest and most effective use of language,is able to use all of your computer hardware features and can only directly control the hardware language This article discusses how to use assembly language in computer programming sort important operation.

Keywords:Assembly language;Sort;Bubble Sort

一、引言

排序是计算机程序设计中的一种重要运算,其功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。经过排序的数据可采用优化的算法提高程序的执行效率;增加输出数据的清晰度,便于信息检索;同时经过排序后的数据往往还隐含一些特殊的含义,为用户提供有价值的信息。

汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言,因而,对于程序的空间和时间要求很高的场合,汇编语言是必不可少的。本文将主要讨论如何利用汇编语言实现数据的排序功能。

二、算法分析

设计要求:编写一个排序程序,实现10个数据的从小到大的升序排列。

程序算法:气泡排序是一种常用的排序方法,它的规则是:表中相邻两元素一一比较,并把大值元素向下交换,直至表尾(大值元素落底),此时,称为一次冒泡(程序中一次大循环)。以后重复冒泡排序,直至最小元素冒到表顶为止。若在一次冒泡排序中没有出现两元素交换(设标志为0),则停止排序。

具体算法:该程序采用双重循环结构,其中DL用来设置外循环次数,CX用来设置内循环次数,DH设为交换标志。其中内部循环L1主要完成一次冒泡过程,即对相邻两个元素进行比较。外循环L2主要用来控制整个冒泡的次数,即n-1次。

算法描述如下:

datasegment

memdb 10,9,8,7,6,5,4,3,2,1

len dw$-mem

dataends

codesegment

mainproc far

assume cs:code,ds:data

start:push ds

sub ax,ax

push ax

mov ax,data

mov ds,ax

mov dh,1

mov dl,len

Lo: ordh,dh

JzL3

mov dh,0

mov cx,len

sub cx,bx

mov si,offsetmem

L1:mov al,[si]

Incsi

cmp al,[si]

jbeL2

xchg al,[si]

mov [si-1],al

mov dh,1

L2:loop L1

incbx

decdl

jnz L0

L3: ret

code ends

endstart

三、算法分析

空间效率:冒牌法排序仅用了一个辅助单元,即空间复杂度为O(1)。

时间效率:

待排元素状态 “比较”次数 “移动”次数

正序 n-1 0

逆序 n(n-1)/2 3n(n-1)/2

若待排序元素处于随机状态,则冒泡法排序的平均时间复杂度为O(n2)。

稳定性:冒泡排序是一种稳定排序方法。

四、结束语

本文主要介绍了采用汇编语言实

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值