JAVA 从小到大输出疑问

来源:百度知道 编辑:UC知道 时间:2024/06/20 17:14:06
class Chang{
public static void main(String args[]){
int a[]={6,1,8,3,7,2,0,9,5,4};
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length;j++)
if(a[i]<a[j]){
int c=a[i];a[i]=a[j];a[j]=c;
}
for(int k=0;k<a.length;k++)
System.out.print(a[k]+" ");
System.out.println();
}

}
}
请高手提示下,这是个什么排序法?他是怎么运行的!我是菜鸟

这个算是冒泡排序,是最原始的排序方法
这里是让每个数字和相邻的数字比较一下,
int c=a[i];a[i]=a[j];a[j]=c;
这句是交换a[i]和a[j]
把小的数字一次次换到前面去,就像冒气泡一样

你自己拿个笔写一下循环能使自己更进一部了解的

提示下:

分别用2个下标变量i和j
首先用a[i]与a[j]比也就是a[0]与a[0]比然后拿a[0]与a[1]比
一直到a[0]与a[a.length-1]比 可以找到a.length个元素中最小的一个

然后再拿a[1]与a[j]比也就是a[1与a[0]比然后拿a[1]与a[1]比
一直到a[1]与a[a.length-1]比 可以知道a.length个元素第2个小的

for(int i=0;i<a.length;i++)
for(int j=i;j<a.length;j++) //吧这里的0换成i

就是从大到小开始排了

冒泡排序法
你的不是完全对,结果是对的,但多循环了几次
循环该这样

for(int i=0;i<a.length-1;i++)
for(int j=i+1;j<a.length;j++)

j循环完第一次后,最大(小)的值就到最前面了

所以叫冒泡,想要的值不断被循环冒上来

for(){for()}外面一层小的循环,里面一层大的循环。
而if(a[i]<a[j]) 从小到大排序。
int c=a[i];a[i]=a[j];a[j]=c就是交换顺序,从小到大。
其实你只要
System.out.println(c+"和"+a[i]+"和"+a[j]);就可以完全理解了。

这是一个典型的冒泡写法.怎么运行的...我怎么说啊,就是比较2个数,把小的更大的交换位置.这个跟是不是JAVA没有关系,属于数据结构的东西.

冒泡排序, 先排序在输出。