java 冒泡法

来源:百度知道 编辑:UC知道 时间:2024/06/17 19:56:15
这是我写的数组冒泡排序
但是 程序提示我说 局部变量d 可能没有初始化。。。我照到书写的 未必真的有错啊?
public class shuzu {
public static void main(String args[])
{
int a,b,c,d;
int size=10;
int sj[]={2,32,0,23,76,356,1,35,299,79};
for(a=0;a<10;a++)
{
System.out.println(sj[a]);
}
for(b=1;b<size;b++)
{
for(c=size-1;c>=b;c--)
{
if(sj[c-1]>sj[c])
d=sj[c-1];
sj[c-1]=sj[c];
sj[c]=d;
}
for(b=1;b<size;b++)
{
System.out.println(sj[b]);
}
}
}
最后一个for中的b是a 我刚才写错老 请达人来看哈也

可以老 还有个问题 我这个程序运行结果不对 能麻烦谁来修改下吗?

肯定会有错的~
if(sj[c-1]>sj[c])
d = sj[c-1];
注意 if语句的作用范围
如果不加{}只为if后的一语句也就是d=sj[c-1];
这样一是达不到排序的目的
还会报错
因为 当sj[c-1]<sj[c]时不会执行d = sj[c-1];
而你后面又用sj[c]=d
所以报错

正解
if(sj[c-1]>sj[c]) {
d=sj[c-1];
sj[c-1]=sj[c];
sj[c]=d;

}

它说你没有初始化,那你就初始化d
int d=0;

书上的错很多的。

是泡末排序啊,呵呵