太原理工大学 计算机软件技术基础 顺序表的冒泡排序 实验报告

合集下载

太原理工大学微机原理实验报告课案

太原理工大学微机原理实验报告课案

本科实验报告课程名称:微机原理及应用实验项目:实验地点:专业班级:机械xxx班学号:xxxxxxxxxx 学生姓名:xx指导教师:2016年12月28日实验一汇编语言程序开发环境与程序调试一、实验要求和目的1.熟悉在微机上编辑、汇编、连接、调试和运行汇编语言程序的过程,掌握PC 环境下命令行方式的特点。

2.熟悉汇编过程中一些常见出错信息。

3.熟悉程序调试的方法, DOS命令窗口的debug的常用命令。

二、实验内容1、项目要求:在屏幕上显示字符串‘Hello,world!’。

2、程序设计思想:运用DOS系统功能调用(INT 21H)的9号功能。

DOS系统功能调用的9号功能是显示字符串,它调用的参数DS:DX=串地址,且字符串以“$”结束。

程序流程图如图1-1:图1-1 程序流程图3、程序清单:完整指令代码如下(简化段定义格式):.model small ;定义程序的存储模式.486 ;说明使用的80x86微处理器指令.stack ;定义堆栈段.data ;定义数据段String db 'Hello, world!','$'.code ;定义代码段.startup ;程序执行开始Mov ax, seg String ;把String的段地址送axMov ds,ax ;ax送ds,ds取得string的段地址mov dx,offset String ;String的偏移地址送dxmov ah,9 ;字符串显示功能int 21h ;DOS功能调用mov ax,4c00hint 21h ;返回DOS.exitend三、结果与分析指导教师:年月实验二内存数据的移动一、实验要求与目的:1、实验要求:编写程序实现把数据段的字符串数据移动到附加段中。

2、实验目的:通过项目学习汇编的数据传送指令和串处理类指令,巩固寻址方式,学习汇编程序设计。

二、实验内容:1、项目要求:把数据段中以dstring地址标号为开始地址的“hello world!”字符串移动到附加段以sstring地址标号为开始地址中去。

冒泡排序(实验报告)

冒泡排序(实验报告)

一、实验目的和要求理解和掌握冒泡排序技术,使用C语言根据相应算法编写一个程序,实现冒泡排序。

要求仔细阅读下面的内容,编写C程序,上机通过,并观察其结果,写出实验报告书。

二、实验内容和原理内容:用冒泡排序对顺序存储的长度为10的无序线性表排序。

原理:首先,从表头开始往后扫描线性表,依次比较相邻两个元素,若前面的元素大于后面的元素,将它们交换。

然后,从后往前扫描后面的线性表,依次比较相邻两个元素,若后面的元素大于前面的元素,将它们交换。

对剩下的线性表重复上述过程,直到剩余表为空。

此时的线性表为有序。

三、主要仪器设备计算机一台四、实验主程序#include<stdio.h>void bub(int a[],int n);int main(void){inta[10]={456,1564,1231,44,1,32,78,15,3,6 56},i;for(i=0;i<10;++i)printf("%d ",a[i]);printf("\n");bub(a,10);for(i=0;i<10;++i)printf("%d ",a[i]);printf("\n");getchar();return 0;}void bub(int a[],int n){int i,j,k,m,temp;k=0;m=n-1;while(k<m){j=m;m=0;for(i=k;i<j;++i)if(a[i]>a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;m=i;}j=k;k=0;for(i=m;i>j;--i)if(a[i]<a[i-1]){temp=a[i];a[i]=a[i-1];a[i-1]=temp;k=i;}}}实验结果五、实验心得通过实验学习,我理解了冒泡排序的算法,并实现了用c语言编写程序,提高了我的编程能力,受益匪浅。

计算机软件技术基础 排序实验报告

计算机软件技术基础 排序实验报告
default:printf("\n %c为非法选项! \n",choose);
}
if(choose=='0') break;
printf("\n要继续选择吗(y/n)?\n");
do
{yes_no=getch();
}
while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
}
while(yes_no=='Y'||yes_no=='y');
}
void paixu1(int n)
{ int a[MAX]; //定义5万个空间来存储数据
if(Read_num1(a,n)) Bubble_sort(a,n);
if(Read_num1(a,n)) Select_sort(a,n);
if(Read_num3(a,n))
{ Quick_sort(a, 0, n);
}
printf("排序效率如上,程序运行完毕\n");
}
int Test_num(int n)
{ freopen("测试数据.txt","w",stdout);
srand(time(NULL));
int i=0;
for(;i<n;i++)
}
int Insert_sort(int *a,int n)
{ time_t start,end; start=clock();

太原理工大学 计算机软件技术基础 顺序表的冒泡排序 实验报告

太原理工大学  计算机软件技术基础  顺序表的冒泡排序  实验报告

太原理工大学现代科技学院计算机软件技术基础课程实验报告专业班级学号姓名指导教师实验名称 顺序表的冒泡排序 同组人 专业班级 学号 姓名 成绩 实验目的与要求:理解和掌握线性表的排序技术,使用C 语言根据相应算法编写一个程序,实现顺序存储的线性表的冒泡排序。

要求仔细阅读下面的内容,编写C 程序,上机通过,并观察其结果,写出实验报告书。

实验内容:将顺序存储的长度为n 的无序线性表进行排序 具体要求: ① 根据线性表的冒泡排序的算法编写C 程序,并上机调试。

② 编写的C 程序要求将顺序存储的长度为n 的无序线性表进行排序。

③ 实验完成后,写出实验报告书。

上机程序: bubsort(p,n) int n;int p[]; { int m,k,j,i; int d; k=0;m=n-1; while (k<m) {j=m-1;m=0; for(i=k;i<=j;i++) if(p[i]>p[i+1]) {d=p[i];p[i]=p[i+1];p[i+1]=d;m=i;} j=k+1;k=0; for(i=m;i>=j;i--) if(p[i-1]>p[i]) {d=p[i];p[i]=p[i-1];p[i-1]=d;k=i;} }……………………………………装………………………………………订…………………………………………线………………………………………return;}main(){int i,n=10;int p[10];printf ("input 10 number:"); printf ("\n");for (i=0;i<10;i++)scanf("%d",&p[i]); bubsort(p,n);printf("the sorted number:"); for (i=0;i<10;i++)printf("%5d",p[i]);printf("\n");getch();}实验结果:。

冒泡法排序实验报告

冒泡法排序实验报告

冒泡法排序实验报告一、实验任务实现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 <iostream.h>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";cin>>n;//提示输入需要排序的各个数cout<<"Please input the numbers: \n";x[0] = 0;for(i=1;i<n+1;i++) //初始化需要排序的数组x[n]cin>>x[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 //将一个数读入到axcmp ax,b //比较两数大小jc exit //若a小则跳出xchg ax,b //若b小则两数交换次序mov a,axexit: NOP}x[j-1] = a; //保存两数排序结果x[j] = b;}}//输出排序结果,按从小到大排列cout<<"The Result is : \n";for(i=1;i<n+1;i++)cout<<x[i]<<' ';cout<<'\n';return 0;}四、实验结果。

冒泡排序计算实验报告

冒泡排序计算实验报告

一、实验目的1. 理解冒泡排序算法的基本原理和实现过程。

2. 分析冒泡排序算法的时间复杂度和空间复杂度。

3. 通过实验验证冒泡排序算法在不同数据规模下的性能表现。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.73. 开发环境:PyCharm三、实验内容1. 冒泡排序算法的实现2. 冒泡排序算法的性能测试3. 结果分析四、实验步骤1. 实现冒泡排序算法```pythondef bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, n-i-1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j]return arr```2. 生成测试数据```pythonimport randomdef generate_data(n):return [random.randint(0, 10000) for _ in range(n)]```3. 测试冒泡排序算法性能```pythondef test_bubble_sort():data_sizes = [100, 1000, 10000, 100000]for size in data_sizes:data = generate_data(size)sorted_data = bubble_sort(data.copy())assert sorted_data == sorted(data), "排序结果错误"print(f"数据规模:{size}, 排序耗时:{time.time() - start_time:.4f}秒")start_time = time.time()test_bubble_sort()print(f"实验总耗时:{time.time() - start_time:.4f}秒")```五、结果分析1. 冒泡排序算法的时间复杂度分析冒泡排序算法的时间复杂度主要取决于两层循环的执行次数。

实验报告_冒泡排序法(3篇)

实验报告_冒泡排序法(3篇)

第1篇一、实验目的1. 理解冒泡排序算法的基本原理和操作步骤。

2. 掌握冒泡排序算法的实现方法。

3. 分析冒泡排序算法的时间复杂度和空间复杂度。

4. 通过实验验证冒泡排序算法的效率。

二、实验环境1. 操作系统:Windows 102. 编程语言:C++3. 开发环境:Visual Studio 2019三、实验原理冒泡排序是一种简单的排序算法,其基本思想是通过多次比较和交换相邻元素,将待排序的序列变为有序序列。

冒泡排序算法的基本步骤如下:1. 从第一个元素开始,相邻的两个元素进行比较,如果它们的顺序错误(即第一个元素大于第二个元素),则交换它们的位置。

2. 重复步骤1,对相邻的元素进行比较和交换,直到整个序列的最后一个元素。

3. 第一轮排序完成后,最大的元素被放置在序列的最后一个位置。

4. 从第一个元素开始,对剩余的元素重复步骤1和步骤2,直到序列的倒数第二个元素。

5. 重复步骤3和步骤4,直到整个序列有序。

四、实验步骤1. 编写冒泡排序算法的C++代码,实现上述算法步骤。

2. 在主函数中创建一个待排序的数组。

3. 调用冒泡排序函数对数组进行排序。

4. 输出排序前后的数组,验证排序结果。

五、实验代码```cppinclude <iostream>using namespace std;// 冒泡排序函数void bubbleSort(int arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) {// 交换相邻元素int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}// 打印数组函数void printArray(int arr[], int n) {for (int i = 0; i < n; i++) {cout << arr[i] << " ";}cout << endl;}int main() {// 创建待排序的数组int arr[] = {64, 34, 25, 12, 22, 11, 90};int n = sizeof(arr) / sizeof(arr[0]);// 打印排序前的数组cout << "排序前的数组:\n";printArray(arr, n);// 调用冒泡排序函数bubbleSort(arr, n);// 打印排序后的数组cout << "排序后的数组:\n";printArray(arr, n);return 0;}```六、实验结果与分析1. 运行实验程序,输出排序前后的数组,验证排序结果是否正确。

软件技术基础实验报告

软件技术基础实验报告

《软件开发技术基础》实验报告学院:XX学院班级:XX: XX学号:XX《软件开发技术基础》实验报告实验名称:实验一顺序表的操作班级学号姓名第周星期节成绩一、实验目的:1、掌握顺序表结构的实现方式;2、掌握顺序表常用算法的实现;3、熟悉利用顺序表解决问题的一般思路;4、参照给定的顺序表的程序样例,验证给出的顺序表的常见算法,领会顺序表结构的优点和不足。

二、实验要求:1、掌握顺序表的特点及常见算法。

2、提交实验报告,报告内容包括:目的、要求、算法描述、程序结构、主要变量说明、程序清单、调试情况、设计技巧、心得体会。

三、实验内容:1、设计一个静态数组存储结构的顺序表,要求编程实现如下任务:(1)建立一个顺序表,首先依次输人整数数据元素(个数根据需要键盘给定)。

(2)删除指定位置的数据元素(指定元素位置通过键盘输入),再依次显示删除后的顺序表中的数据元素。

(3)查找指定数据的数据元素(指定数据由键盘输入),若找到则显示位置,若没有找到则显示0。

2、使用顺序表实现一个电话本的管理程序,电话本中的每条记录包括学号、、手机号码和固定电话四项。

要求实现菜单、初始化、添加、删除和显示等功能。

四、程序要求:1、采用顺序表实现,假设该顺序表的数据元素个数在最坏情况下不会超过50个。

2、写出完整的程序并能调试运行。

五、实验结果:1、顺序表的结果:2、电话簿的结果:六、实验中遇到的问题及解决方法:1.在删除数据的时候如果有两个一样的数时要怎样解决?解决方法:用while进行判断。

2.在删除操作中,删除函数中的l是指针,所以用->指向,而在主函数中l是结构体,用“.”。

3.在查找的时候有一个返回值,而这个返回值是指针,所以在写查找函数的时候要把返回值类型写上。

七、实验心得体会:一开始不知所措,首先应该有一个大的方向,把主程序编号,再逐步求精,落实到每一个函数的编写。

对于c语言要熟练掌握,要熟悉循环等得操作,要熟练掌握顺序表中的插入,删除,查找,的基本函数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

太原理工大学现代科技学院
计算机软件技术基础课程实验报告
专业班级
学号
姓名
指导教师
实验名称 顺序表的冒泡排序 同组人 专业班级 学号 姓名 成绩 实验目的与要求:理解和掌握线性表的排序技术,使用C 语言根据相应算法编写一个程序,实现顺序存储的线性表的冒泡排序。

要求仔细阅读下面的内容,编写C 程序,上机通过,并观察其结果,写出实验报告书。

实验内容:将顺序存储的长度为n 的无序线性表进行排序 具体要求: ① 根据线性表的冒泡排序的算法编写C 程序,并上机调试。

② 编写的C 程序要求将顺序存储的长度为n 的无序线性表进行排序。

③ 实验完成后,写出实验报告书。

上机程序: bubsort(p,n) int n;int p[]; { int m,k,j,i; int d; k=0;m=n-1; while (k<m) {j=m-1;m=0; for(i=k;i<=j;i++) if(p[i]>p[i+1]) {d=p[i];p[i]=p[i+1];p[i+1]=d;m=i;} j=k+1;k=0; for(i=m;i>=j;i--) if(p[i-1]>p[i]) {d=p[i];p[i]=p[i-1];p[i-1]=d;k=i;} }


……
……
……
……
……

…装
……
……
……
……

……
……
……
订…
……

……
……
……
……
……

…线
……
……
……
……

……
……
……
return;
}
main()
{int i,n=10;int p[10];
printf ("input 10 number:"); printf ("\n");
for (i=0;i<10;i++)
scanf("%d",&p[i]); bubsort(p,n);
printf("the sorted number:"); for (i=0;i<10;i++)
printf("%5d",p[i]);
printf("\n");
getch();
}
实验结果:。

相关文档
最新文档