黑马程序员技术交流社区

标题: 大家帮忙看下吧......哪里错了呢? [打印本页]

作者: 李振乐    时间: 2014-11-11 17:07
标题: 大家帮忙看下吧......哪里错了呢?
package Every;

public class LianXi {

        public static void main(String[] args) {
                int[] arr = new int[]{22,33,2,344,4,555,333,21,5,8};
               
                for(int x=0;x<arr.length-1;x++)
                {
                        for(int y=x;y<arr.length-1-x;y++)
                        {
                                if(arr[y]>arr[y+1])
                                {
                                        int temp=arr[y];
                                        arr[y]=arr[y+1];
                                        arr[y+1]=temp;
                                }
                        }
                }
                System.out.print("[");
                for(int x = 0;x<arr.length;x++)
                        if(x!=arr.length-1)
                                System.out.print(arr[x]+",");
                        else
                                System.out.print(arr[x]+"]");;
               
        }

}
运行结果:::
[22,2,4,21,5,8,33,333,344,555]
作者: 冥夜    时间: 2014-11-11 17:39
本帖最后由 冥夜 于 2014-11-11 17:40 编辑

题目要求都没说要我们怎么帮你。。你是想对数组排序?
作者: 黑马-幻灭    时间: 2014-11-11 20:40
内循环 y的初值应该是0..................
作者: javaAndroid    时间: 2014-11-11 23:16
for (int y = 0; y < arr.length - 1 - x; y++)
每排一趟,都要从第一个元素开始
作者: 爱学习的小明    时间: 2014-11-12 13:16
冒泡排序,如果内循环里的判断语句是if(arr[y]>arr[y+1])调换两元素位置,那么内循环的y的起始数从0开始,y<arr.length-1-x;
如果内循环里判断语句是if(arr[y]<arr[y+1]),那么内循环y的起始数从x开始,到x<arr.length-1,你把这两种情况混淆了
作者: DamonZh    时间: 2014-11-12 14:29
内部的for从0开始 每比较一遍 从头开始再比较的
作者: dong53821713    时间: 2014-11-12 16:34
for(y=0;y<arr.length-1-x;y++)
作者: 阿穆隆    时间: 2014-11-12 17:10
昨天刚学到这个。。。

感觉2L说的对的。因为y初始值为x的话外循环第二圈的时候y就变成1,这样的话内循环中的0位置角标就不能进行运算了。
作者: 高昌德    时间: 2014-11-12 17:18
内循环应该从0开始




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2