CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

(请教)关于冒泡排序程序改进的问题.

楼主superccwang(菜鸟先飞)2005-06-03 01:07:26 在 C/C++ / C语言 提问

#include   <stdlib.h>  
  #include   <stdio.h>  
  #define   maxsize   20  
  struct   node  
  {int       key;  
  }sqlist[maxsize];  
  void     doublebubble(struct   node   r[],int   n)  
  {     int   i=0,j=n-1,l,b=1;  
  struct     node     t;  
  while     (b)  
  {   b=0;  
  for   (l=j;l>i;l--)  
  if   (r[l].key<r[l-1].key)   /*找出最小值元素*/  
  {   b=1;     t=r[l];  
  r[l]=r[l-1];  
  r[l-1]=t;  
  }  
  i++;  
  for   (l=i;l<j;l++)  
  if   (r[l].key>r[l+1].key)   /*找出最大值元素*/  
  {   b=1;     t=r[l+1];  
  r[l+1]=r[l];  
  r[l]=t;  
  }  
  j--;  
  }  
  }  
  main(   )     /*主函数*/  
  {int   i,n,temp;  
  struct   node     r[20];  
  printf("input   the   numbers   of   the   table:\n");  
  scanf("%d",&n);     /*输入待排序的元素个数*/  
  for   (i=0   ;i<n;   i++)  
  {scanf("%d",   &temp);           /*输入待排序的元素的关键码(其它数据项略)*/  
    r[i].key=temp;  
  }  
  doublebubble(r,n);  
  for   (i=0   ;i<n;   i++)  
  printf("%5d",r[i].key);  
  printf("\n");  
  }  
  试对上述算法进行改进,以使每一趟的冒泡过程都输出相应的结果(从小到大)。 问题点数:0、回复次数:10Top

1 楼mccxj(老鼠不逛街)回复于 2005-06-03 01:17:03 得分 0

这个程序也太烦人了吧。。好多没有用的变量。。格式也不怎么好。。。Top

2 楼superccwang(菜鸟先飞)回复于 2005-06-03 01:20:06 得分 0

所以说需要改进嘛!  
  需要您这样的高手帮忙解决啊!Top

3 楼mccxj(老鼠不逛街)回复于 2005-06-03 01:22:37 得分 0

这是你写的??Top

4 楼mccxj(老鼠不逛街)回复于 2005-06-03 01:27:23 得分 0

#include   <stdlib.h>  
  #include   <stdio.h>  
  #define   maxsize   20  
  struct   node  
  {int       key;  
  }sqlist[maxsize];  
  void     doublebubble(struct   node   r[],int   n)  
  {      
  int   i=0,j=n-1,l,b=1;  
  struct     node     t;  
  while     (b)  
  {  
  b=0;  
  for   (l=j;l>i;l--)  
  if   (r[l].key<r[l-1].key)   /*找出最小值元素*/  
  {    
  b=1;      
  t=r[l];  
  r[l]=r[l-1];  
  r[l-1]=t;  
  }  
  i++;  
  for   (l=i;l<j;l++)  
  if   (r[l].key>r[l+1].key)   /*找出最大值元素*/  
  {    
  b=1;      
  t=r[l+1];  
  r[l+1]=r[l];  
  r[l]=t;  
  }  
  j--;  
  for(int   k=0;k<n;k++)//估计你的意思是这样吧。。。建议还是把程序重新写过把。。好多问题。。虽然可以通过。。。  
  {  
  printf("%5d",r[k].key);  
  }  
  printf("\n");  
  }  
  }  
   
  main(   )     /*主函数*/  
  {  
  int   i,n,temp;  
  struct   node     r[20];  
  printf("input   the   numbers   of   the   table:\n");  
  scanf("%d",&n);     /*输入待排序的元素个数*/  
  for   (i=0   ;i<n;   i++)  
  {  
  scanf("%d",   &temp);           /*输入待排序的元素的关键码(其它数据项略)*/  
  r[i].key=temp;  
  }  
  doublebubble(r,n);  
  for   (i=0   ;i<n;   i++)  
  printf("%5d",r[i].key);  
  printf("\n");  
  }Top

5 楼superccwang(菜鸟先飞)回复于 2005-06-03 01:32:13 得分 0

谢谢大哥!  
   
  小弟新手,手生的很!Top

6 楼superccwang(菜鸟先飞)回复于 2005-06-03 01:35:34 得分 0

能否改进冒泡排序,编制一个程序,对一个待排序的数据集合进行奇偶转换排序呢?Top

7 楼mccxj(老鼠不逛街)回复于 2005-06-03 01:36:34 得分 0

奇偶转换排序??什么意思?Top

8 楼superccwang(菜鸟先飞)回复于 2005-06-03 01:38:01 得分 0

奇偶排序是指第一趟对所有奇数的i,将a[i]和a[i+1]进行比较,第二趟是对所有偶数的i,将a[I]和进行比较a[i+1],每次比较时,若a[i]>a[i+1],则将二者交换,重复上述二趟过程的交换进行,直到整个数组有序。Top

9 楼mccxj(老鼠不逛街)回复于 2005-06-03 01:41:43 得分 0

呵呵。。算法你都知道了。。还不会写吗??。。。就是用两次循环咯。。。呵呵。。自己考虑。。很晚了。。早点睡觉把。。。Top

10 楼superccwang(菜鸟先飞)回复于 2005-06-03 01:44:21 得分 0

呵呵  
  我的目的就是要把书上的算法实现啊!Top

相关问题

  • 冒泡排序!
  • 关于冒泡排序程序代码的一点困惑?
  • 冒泡排序法
  • 冒泡排序程序,有个错误,不知是怎么错了,大家帮我看看,
  • 冒泡排序,但怎么没排成??
  • 冒泡排序,我的为何不对?
  • 一段冒泡排序,帮我看看
  • 想问一下,数组中的排序,比如冒泡排序,插入排序,快速排序。。。
  • 冒泡法程序定义的问题
  • 请问冒泡法排序的最佳算法~~~waiting..................

关键词

  • maxsize
  • 元素
  • struct node
  • key
  • include

得分解答快速导航

  • 帖主:superccwang

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo