冒泡排序算法和递归算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(j=0;j<7-i;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf("\nThe number are:\n");
for(i=0;i<8;i++)
printf("%5d",a[i]);
}
程序运行结果如下:
2、写出汉诺塔问题的递归算法程序。写出n=3和n=4时,圆盘的移动总次数和每步移动过程。
实验一、冒泡排序算法和递归算法
一、实验目的与要求
1.熟悉C/C++语言的集成开发环境;
2.通过本实验加深对冒泡排序算法和递归过程的理解。
二、实验内容:
掌握冒泡排序算法和递归算法的概念和基本思想,分析并掌握“汉诺塔”问题的递归算法。
三、实验题
1、分析并写出冒泡排序算法,输入数列{43,1,23,100,90,9,19,17},写出程序运行结果。
}
void hanoi(int n, char a,char b, char c)
{
if(n == 1)
move(n,a,c);
else{
hanoi(n-1,a,c,b);//将前n-1个盘子从a通过c移到b
move(n,a,c);//将剩余的最后一个盘子从a移到c
hanoi(n-1,b,a,c);//将n-1个盘子从b通过a移到c
int main()
{
int number;
char a,b,c;
a='A';
b='B';
c='C';
SYSTEMTIME sys1,sys2;
cout<<"请输入汉诺塔的数目:";
cin>>number;
GetLocalTime(&sys1);
hanoi(number,a,b,c);
GetLocalTime(&sys2);
规模为n的算法如下:
实现算法程序如下:
#include<iostream>
#include<windows.h>
#include<conio.h>
using namespace std;
int count=0;
void move(int n,char a,char b);
void hanoi(int n, char a,char b, char c);
}
}
void move(int n,char a,char b)
{
count++;
cout<<"第"<<n<<"个盘子从";
cout<<a<<"移到"<<b<<endl;
}
运行结果如下:
当n=3时,圆盘的移动总次数和每步移动过程
当n=4时,圆盘的移动总次数和每步移动过程
四,实验心得:
通过这两个实验的设计与调试,我初步掌握了冒泡排序算法和递归算法的概念和基本思想,并掌握“汉诺塔”问题的递归算法,加深对冒泡排序算法和递归过程的理解,增加了我对算法编程的兴趣
cout<<"总部署为"<<count<<endl;
cout<<"\n运行时间为"<<((sys2.wSecond-sys1.wSecond)*1000+sys2.wMilliseconds-sys1.wMilliseconds);
cout<<"m seconds passed"<<endl;
return 0;
算法如下:
C程序如下:
#include<iostream>
void main()
{ห้องสมุดไป่ตู้
int a[8];
int i,j,t;
printf("Please input 8 number:\n");
for(i=0;i<8;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=0;i<7;i++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf("\nThe number are:\n");
for(i=0;i<8;i++)
printf("%5d",a[i]);
}
程序运行结果如下:
2、写出汉诺塔问题的递归算法程序。写出n=3和n=4时,圆盘的移动总次数和每步移动过程。
实验一、冒泡排序算法和递归算法
一、实验目的与要求
1.熟悉C/C++语言的集成开发环境;
2.通过本实验加深对冒泡排序算法和递归过程的理解。
二、实验内容:
掌握冒泡排序算法和递归算法的概念和基本思想,分析并掌握“汉诺塔”问题的递归算法。
三、实验题
1、分析并写出冒泡排序算法,输入数列{43,1,23,100,90,9,19,17},写出程序运行结果。
}
void hanoi(int n, char a,char b, char c)
{
if(n == 1)
move(n,a,c);
else{
hanoi(n-1,a,c,b);//将前n-1个盘子从a通过c移到b
move(n,a,c);//将剩余的最后一个盘子从a移到c
hanoi(n-1,b,a,c);//将n-1个盘子从b通过a移到c
int main()
{
int number;
char a,b,c;
a='A';
b='B';
c='C';
SYSTEMTIME sys1,sys2;
cout<<"请输入汉诺塔的数目:";
cin>>number;
GetLocalTime(&sys1);
hanoi(number,a,b,c);
GetLocalTime(&sys2);
规模为n的算法如下:
实现算法程序如下:
#include<iostream>
#include<windows.h>
#include<conio.h>
using namespace std;
int count=0;
void move(int n,char a,char b);
void hanoi(int n, char a,char b, char c);
}
}
void move(int n,char a,char b)
{
count++;
cout<<"第"<<n<<"个盘子从";
cout<<a<<"移到"<<b<<endl;
}
运行结果如下:
当n=3时,圆盘的移动总次数和每步移动过程
当n=4时,圆盘的移动总次数和每步移动过程
四,实验心得:
通过这两个实验的设计与调试,我初步掌握了冒泡排序算法和递归算法的概念和基本思想,并掌握“汉诺塔”问题的递归算法,加深对冒泡排序算法和递归过程的理解,增加了我对算法编程的兴趣
cout<<"总部署为"<<count<<endl;
cout<<"\n运行时间为"<<((sys2.wSecond-sys1.wSecond)*1000+sys2.wMilliseconds-sys1.wMilliseconds);
cout<<"m seconds passed"<<endl;
return 0;
算法如下:
C程序如下:
#include<iostream>
void main()
{ห้องสมุดไป่ตู้
int a[8];
int i,j,t;
printf("Please input 8 number:\n");
for(i=0;i<8;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=0;i<7;i++)