| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3130 人关注过本帖
标题:求助:冒泡排序里的for循环
只看楼主 加入收藏
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
以下是引用wxhkimmy在2007-8-19 10:34:12的发言:
下面那个嵌套循环i,j各表示什么?为什么j<5-i-1呢?那个嵌套循环是怎么实现的?谢谢!

int i,j;
int a[5],temp;
printf("请输入五个数:");
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}

for(i=0;i<5;i++)
{
for(j=0;j<5-i-1;j++)
{
if(a[j]<a[j+1])
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}

图片附件: 游客没有浏览图片的权限,请 登录注册


图片附件: 游客没有浏览图片的权限,请 登录注册



清华大学出版社 徐孝凯 数据结构简明教程
2007-08-19 18:27
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
LZ的程序有错误`````
for(j=0;j<5-i-1;j++)
{
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}

少了括号``

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-08-19 18:33
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
我说一下吧```

i表示我们所取的要其他比较的数```
j表示i后面所有要和i比较的数````

为什么要j<5-i-1呢`?

我们知道``j表示i后面所有要和i比较的数````而数一共有5个``

那么i后面还有多少个数要比较呢??``不就是5-i吗``

我们还知道``当比到还有最后一个数就不用比了``因为这个时候``顺序已经出来了``

也就是说``最后一个数是不用比的``那么在原来要比的数的基础上就少了一个``

也就是5-i-1了```

LZ明白了吗``

有时候看不动程序不要紧```自己例出些符合题目的列子``然后照着程序运行一次```慢慢一步一步来```

看看变量是怎么变化的``然后在里面总结出规律来``

我以前就被SHELL的排序算法弄惨了```还不是自己弄了十几篇纸一 边画一边写上变量的变化过程````

在到论坛上来问问``最后才弄明白``


程序之路很艰辛```LZ不要懒啊````


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-08-19 18:45
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
收藏
得分:0 

楼上说得太对啦


英者自知,雄者自胜
2007-08-19 19:40
wxhkimmy
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-8-12
收藏
得分:0 
我弄明白了,谢谢大家喔!

努力努力再努力!
2007-08-21 22:49
xu66zhen
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-7-23
收藏
得分:0 

勤奋和专研才是编程爱好者的基本素质


2007-08-22 08:46
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
收藏
得分:0 

[分享][转载]一般人会想到的标准数组算法:(n为数组的长度)

void sorted(int a[], int n)
{
int temp = 0;

for (int i=0;i<n-1;i++)
{
for (int j=0;j<n-i-1;j++)
{
if (a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}

指针方式的算法:(n为数组的长度,p为数组的首地址)

void sorted2(int *p, int n)
{
  int *i, *j, temp;
  while(n!=1)
  {
    for(i=p,j=p+1;i<p+n-1 && j<p+n;i++,j++)
    {
      if (*i>*j)
      {
        temp = *i;
        *i=*j;
         *j=temp;
      }
    }

    n--;
  }
}


惟有学习不断的学习!
2007-08-22 08:57
疯狂的小草
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-7-24
收藏
得分:0 
  11楼的 斑竹 你看的什么书啊 告诉下名
2007-08-22 15:41
yrlq1984
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-9-3
收藏
得分:0 
路过,抄下来回家慢慢看,谢谢各位大虾们!

2007-09-03 15:56
knightman
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-9-2
收藏
得分:0 

我发表的帖子里有具体的算法和解释~

2007-09-03 22:38
快速回复:求助:冒泡排序里的for循环
数据加载中...
 
   



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

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