| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 710 人关注过本帖
标题:帮忙解释一下冒泡法双向排序的程序
只看楼主 加入收藏
zqlzs
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2008-10-18
收藏
 问题点数:0 回复次数:1 
帮忙解释一下冒泡法双向排序的程序
main()
{
  int a[100],i,m;
  printf("How many number?\n");
  scanf("%d",&i);
  for (m=0;m<i;m++)
    {
      printf("num %d:\n",m+1);
      scanf("%d",&a[m]);
    }
  printf("=====================================\n");
  sort(a,i);
  printf("After sorted \n");
  for (m=0;m<i;m++)
  printf("%d ",a[m]);
  getch();
}
sort(int p[],int n)   /*int p[],n;*/
{
  int j,k,l,r,temp;
  for (l=1,r=n-1,k=n;l<r;r=k-1)
  {
    for (j=r;j>=1;j--)   /* 上浮 */
      if (p[j-1]>p[j])
        {temp=p[j-1];p[j-1]=p[j];p[j]=temp;k=j;}
    for (j=l=k+1;j<=r;j++)  /* 就是这里啊    */
      if (p[j-1]>p[j])
        {temp=p[j-1];p[j-1]=p[j];p[j]=temp;k=j;}
  }
}
程序运行没问题,就是这点想不通,如果我输入5个数,1,2,3,4,5,的话,前一个数总是比后一个数小,J应该没机会给K赋值啊?而在运行时下个循环时K+1相当于N+1啊,按理来说就不对啊,不是上浮下沉啊??
我知道我的想法错了,希望大家帮忙解释一下
搜索更多相关主题的帖子: 解释 冒泡 
2008-12-13 21:24
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
如果输入1 2 3 4 5 ,就没有交换的机会了,程序空走了一遍而已。
2008-12-13 23:19
快速回复:帮忙解释一下冒泡法双向排序的程序
数据加载中...
 
   



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

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