冒泡法实验报告
冒泡法排序实验报告
一、实验任务
实现N个16位无符号整数的排序,核心程序使用汇编语言实现。
二、程序算法
冒泡法:若有n个数需要排序,则第一次遍历n个数,将x[0]与x[1]相比,若x[0]x[1],则两数交换位置,若x[0]<x[1],则不作任何调整;然后将x[0]与x[2]相比较,若x[0]x[2],则两数交换位置;若x[0]<x[2],则不作任何调整;依此类推,直到x[0]与x[n]比较完毕为止。
接着第二次遍历n-1个数,将x[1]与x[2]相比,若x[1]x[2],则两数交换位置,若x[0]<x[1],则不作任何调整;一直到x[1]与x[n]比较完毕为止。
最后一直到只需要遍历2个数,比较调整完毕就可以得到数组从小到大的排列次序,算法在每次遍历时使最小的数象气泡一样冒到顶端,在经历n-1次遍历以后即可得到结果。
三、源程序及注释
//冒泡排序法
#include <
int main(int argc, char* argv[])
{
unsigned short int x[33]; //排序个数上限为33个
unsigned short int i,j,n;
unsigned short int a,b;
//提示输入排序个数
cout<<Please input the count of numbers: \n;
cinn;
//提示输入需要排序的各个数
cout<<Please input the numbers: \n;
x[0] = 0;
for(i=1;i<n+1;i++)//初始化需要排序的数组x[n]
cinx[i];
for(i=0;i<=n;i++) //冒泡法排序
{
for(j=n;j=i+1;j--) //每次遍历n-i个数
{
a = x[j-1];
b = x[j];
_asm
{
mov ax,a//将一个数读入到ax
cmp ax,b//比较两数大小
jc exit //若a小则跳出
xchg ax,b //若b小则两数交换次序
mov a,ax
exit: NOP
}
x[j-1] = a; //保存两数排序结果 x[j] = b;
}
}
//输出排序结果,按从小到大排列
cout<<The Result is : \n;
for(i=1;i<n+1;i++)
cout<&(转载于: 点网)lt;x[i]<< ;
cout<<\n;
return 0;
}
四、实验结果
篇二:微机原理实验报告冒泡法对数据排序
实验内容:
用“冒泡“法对一组数300,250,280,240,260,按从小到大的顺序排列。
实验要求:
,对这组数进行排序,并输出原数据及排序后数据;
,用D0命令,查看排序前后,内存数据的变化;
3. 去掉最大和最小的两个值,求出其余值的平均值,并输出最大值,最小值和平均值;
4. 用学过的压栈PUSH和出栈POP指令,将平均值按位逐个输出(即输出263);
,并将这组二进制串输出。
,进行输出提示(如:zui da zhi shi : 300等),所有数据结果能清晰地显示在屏幕上。
程序代码:
DATA SEGMENT ;定义数据段
DT1 DW 300,250,280,240,260
DT2 DB what five data input is,0DH,0AH,$
DT3 DB what after rank is,0DH,0AH,$
DT4 DB The max is,0DH,0AH,$
DT5 DB The min is,0DH,0AH,$
DT6 DB The average is,0DH,0AH,$
DT7 DB show you the average one by one,0DH,0AH,$ DT8 DB show you the average in binary form,0DH,0AH,$ DT9 DB 0DH,0AH,$
DT0 DB B,0DH,0AH,$
N EQU 5
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
STAT: MOV AX,DATA
M
冒泡法实验报告 来自淘豆网m.daumloan.com转载请标明出处.