这个~这个冒泡 错在哪?......
#include <stdio.h>
#define true 1
#define false 0
void bubble_sort(int a[],int n)
{ int i,j,change,t;
{ for (i=1,change=true; i<n && change; i++)
change = false;
{ for (j=1; j<=n-j; j++)
if (a[j] > a[j+1])
{ t = a[j];
a[j] = a[j+1];
a[j+1] = t;
change=true;
}
}
}
}
main()
{ int i;
int a[]={8,4,5,2,1,9,6,3,7,0};
bubble_sort (a,10);
for ( i=0; i<10 ;i++)
printf( "%d", a[i]);
}
错在哪了?
谢谢
问题点数:20、回复次数:7Top
1 楼xiaocai0001(高楼目尽欲黄昏/梧桐叶上萧萧雨)回复于 2005-11-07 15:09:10 得分 20
修改后的程序:
#include <stdio.h>
#define true 1
#define false 0
void bubble_sort(int a[],int n)
{
int i,j,change,t;
for(i=1,change=true; i<n && change; ++i)
{
change = false;
for (j=0; j<n-i; ++j)
if (a[j] > a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
change=true;
}
}
}
int main()
{
int i;
int a[]={8,4,5,2,1,9,6,3,7,0};
bubble_sort (a,10);
for ( i=0; i<10 ;i++)
printf( "%d", a[i]);
return 0;
}
Top
2 楼xiaocai0001(高楼目尽欲黄昏/梧桐叶上萧萧雨)回复于 2005-11-07 15:10:12 得分 0
楼主的代码注意语句结构和数据访问界限的问题.Top
3 楼liegou2000(身高八尺腰围也是八尺)回复于 2005-11-07 16:06:41 得分 0
哦.....
a[j] 是0开始的
还有
关于for里面的自加
for(i=0;i<10;i++)和for(i=0;i<10;++i)
没搞的很清楚
一直以为i++和++i在没有赋值的情况下都是一样
还请点解!Top
4 楼xiaocai0001(高楼目尽欲黄昏/梧桐叶上萧萧雨)回复于 2005-11-07 16:42:34 得分 0
在此for循环中i++与++i是一样的。
可以不用考虑这个方面的差异。Top
5 楼liegou2000(身高八尺腰围也是八尺)回复于 2005-11-07 16:47:50 得分 0
谢谢,结贴.Top
6 楼jiangabc(看贴不回)回复于 2005-11-07 17:35:28 得分 0
还有一点,请注意书写风格。
还有一点:
{ for (i=1,change=true; i<n && change; i++)
change = false;
。。。。。。。。。。。。。。。。。。。。。。。
写代码的时候要细心点。
for (i=1,change=true; i<n && change; i++)
{
change = false;
Top
7 楼liegou2000(身高八尺腰围也是八尺)回复于 2005-11-08 09:30:13 得分 0
呵呵,那确实,没注意. 谢谢楼上的.Top




