汉诺塔的C语言实现以及冒泡排序
来源:互联网 发布:秃鹰全套配件淘宝 编辑:程序博客网 时间:2024/05/20 22:04
汉诺塔绝对是一个经典的算法题目,虽然当年也讲过,程序也不长,但是一直以来总觉得理解的不清楚,看程序也能明白什么意思,过一段时间程序忘了,想不起来的时候,就怎么都想不明白了,虽然说好像是那么回事,就是高不明白。借着前两天做八皇后的东风,顺便来理一下这个汉诺塔。园盘从上到下编号1, 2, ..., n,杆子从左至右A,B,C,A是from,C是to。我还是看了以前的java程序然后自己理解一下写的C程序,几乎没有差别,当然写的时候也忘了不少,第一遍出来错误的答案。程序如下:
借着这股东风,我再顺便写一下排序的算法实现,我只记得冒泡跟快速排序了,现在先写一个冒泡排序吧:
- #include <stdio.h>
- #define INIT_NUM 3
- int count;
- void hanoi(int n, char from, char to, char middle)
- {
- if (n > 0)
- {
- count++;
- hanoi(n-1, from, middle, to);
- printf("Move No.%-2d from %c to %c/n", n, from, to);
- hanoi(n-1, middle, 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);
- return 0;
- }
借着这股东风,我再顺便写一下排序的算法实现,我只记得冒泡跟快速排序了,现在先写一个冒泡排序吧:
- #include <stdio.h>
- void show (int *p)
- {
- int i=0;
- for (i=0 ;i<8 ;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<8 ;i++ )
- {
- for (j=0 ;j<7-i ;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);
- }
- return 0;
- }
- 汉诺塔的C语言实现以及冒泡排序
- 冒泡排序算法的c语言实现
- 冒泡排序的C语言实现
- 冒泡排序的C语言实现
- C语言冒泡排序的实现
- 冒泡排序的C语言实现
- C语言实现简单的冒泡排序
- C语言实现冒泡排序
- 冒泡排序C语言实现
- 冒泡排序C语言实现
- 实现冒泡排序(c语言)
- 冒泡排序--C语言实现
- 冒泡排序--c语言实现
- 冒泡排序(C语言实现)
- 冒泡排序C语言实现
- c语言实现冒泡排序
- c语言实现冒泡排序
- C语言实现冒泡排序
- nat
- Time is going
- 关于程序员如何提高自己的一些感言
- 牛顿插值
- 公式基础
- 汉诺塔的C语言实现以及冒泡排序
- delphi 桌面系统转C/S主要任务
- js中的with用法
- 什么是dma
- 判断输入框中不能输入中文
- 学习也需要建立在金钱上啊
- 嵌入式系统开发快速体验
- 跑步日记 2008-11-17
- 王家春先生哲理画