| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 879 人关注过本帖
标题:C基础:C语言实现以及冒泡排序
只看楼主 加入收藏
peitao2003
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2008-10-17
收藏
 问题点数:0 回复次数:3 
C基础:C语言实现以及冒泡排序
汉诺塔绝对是一个经典的算法题目,虽然当年也讲过,程序也不长,但是一直以来总觉得理解的不清楚,看程序也能明白什么意思,过一段时间程序忘了,想不起来的时候,就怎么都想不明白了,虽然说好像是那么回事,就是高不明白。借着前两天做八皇后的东风,顺便来理一下这个汉诺塔。园盘从上到下编号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语言 基础 冒泡 
2008-11-20 09:09
wgcz
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-11-13
收藏
得分:0 
怎么那么多错误...
2008-11-20 12:17
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分: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);
}
    getch();
return 0;
}

楼主使用了在全角状态下的空格,他可能是使用VC进行的调试,可能可以通过,然而其他的就不认识..
我就帮楼主发一下..去除了全角的空格,可以直接使用的.

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-11-20 12:53
peitao2003
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2008-10-17
收藏
得分:0 
好的,谢了啊。
2008-11-20 17:43
快速回复:C基础:C语言实现以及冒泡排序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016209 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved