汉诺塔的C语言实现以及冒泡排序

汉诺塔的C语言实现以及冒泡排序,第1张

汉诺塔的C语言实现以及冒泡排序,第2张

汉诺塔绝对是经典的算法题目。虽然是当年提到的,节目也不长,但总觉得没看明白。我看节目就能明白是什么意思。过了一段时间,程序忘了,记不住了,就完全想不通了。虽然看起来是那样,但我就是不明白。趁着前两天是八皇后的东风,好好管管这河内塔。这些盘子被编号为1,2,...,n从上到下,极点从左到右依次编号为a,b,c,a从,c到。我还是看了之前的java程序,然后自己理解写的C程序。几乎没有区别。当然,写的时候忘了很多,第一次想出了错误的答案。程序如下:
# include
# define init _ num 3
int count;
void hanoi(int n,char from,char to,char middle)
{
if(n > 0)
{
count++;
河内(n-1,from,middle,to);
printf("将编号%-2d从%c移动到%c\n ",n,from,to);
hanoi(n-1,中,to,from);
}
}
int main(int argc,char * argv[])
{
int INIT = INIT _ NUM;
if(argc = = 2)
init = atoi(argv[1]);
printf("A是起始杆,C是辅助杆,B是目的杆。\ n \ n ");
hanoi(init,' A ',' C ',' B ');
printf("\nCount = %d ",count);
返回0;
}
趁着这个东风,考吧。大提示。顺便写一下排序,冒泡,快速排序的算法实现。现在先写一个冒泡排序:
# include
void show(int * p)
{

for(I = 0;i {
printf("%3d ",p[I]);
}
printf(" \ n ");
}
int main(int argc,char * argv[])
{
int p[]= { 8,9,4,5,1,7,6,0 };
int I = 0;
int j = 0;
int tmp = 0;
for(I = 0;I {
for(j = 0;j {
if(p[j]> p[j+1])
{
tmp = p[j];
p[j]= p[j+1];
p[j+1]= tmp;
}
}
printf("第%2d轮排序完成:",I+1);
show(p);
}
返回0;
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 汉诺塔的C语言实现以及冒泡排序

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情