黑马程序员技术交流社区

标题: 关于int型集合排序问题 [打印本页]

作者: 杨强彪    时间: 2015-3-14 10:47
标题: 关于int型集合排序问题
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)+" ");
                }
        }
       

}

为嘛结果不对?排序方法哪里出问题了?
作者: hamesksk    时间: 2015-3-14 13:06
交换位置的地方
arl.set(j+1, arl.get(j));
修改成
arl.set(j+1,temp);
作者: 杨强彪    时间: 2015-3-14 18:01
hamesksk 发表于 2015-3-14 13:06
交换位置的地方
arl.set(j+1, arl.get(j));
修改成

后来我也发现了  谢谢哈




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