A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨强彪 中级黑马   /  2015-3-14 10:47  /  1130 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.*;
public class Test7 {

        /**
         *  第七题:编写程序,生成5个1至10之间的随机整数,存入一个List集合,编写方法对List集合进行排序
         * (自定义排序算法,禁用Collections.sort方法和TreeSet),然后遍历集合输出。
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                ArrayList<Integer> arl=new ArrayList<Integer>();     //新建一个装Integer型数据的ArrayList集合
                for(int i=0;i<5;i++)                                 //生成5个数
                {
                        int b=((int)(Math.random()*10)+1);                    //随机生成    1至10之间的随机整数
                        arl.add(b);
                }
                for(int j=0;j<arl.size();j++)
                {
                        System.out.print(arl.get(j)+" ");
                }
                //调用集合排序方法
                paixu(arl);                           
               

        }
        public static void paixu(ArrayList<Integer> arl)                     //冒泡排序 函数
        {
                int min=0;
                // 外层循环,他决定一共走几趟
                for (int i = 0; i < arl.size() - 1; i++) {
                        // 内层循环,开始逐个比较,如果发现
                        // 前一个数比后一个数大,则,交换
                        for (int j =0; j < arl.size()-i-1; j++) {
                                if (arl.get(j).compareTo(arl.get(j+1))>0)
                                {
                                        //交换位置
                                        int temp=arl.get(j);
                                        arl.set(j, arl.get(j+1));      //调用set方法
                                        arl.set(j+1, arl.get(j));
                                }

                        }
                }
                System.out.println();
                System.out.println("排序后是:");
                for(int k=0;k<arl.size();k++)
                {
                        System.out.print(arl.get(k)+" ");
                }
        }
       

}

为嘛结果不对?排序方法哪里出问题了?

2 个回复

倒序浏览
交换位置的地方
arl.set(j+1, arl.get(j));
修改成
arl.set(j+1,temp);
回复 使用道具 举报
hamesksk 发表于 2015-3-14 13:06
交换位置的地方
arl.set(j+1, arl.get(j));
修改成

后来我也发现了  谢谢哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马