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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gm1314 中级黑马   /  2014-7-30 07:29  /  2599 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 gm1314 于 2014-7-30 20:23 编辑
  1. public class Test9 {
  2.         /*
  3.          * 9、 定义一个静态方法,该方法可以接收一个List<Integer>,方法内对List进行排序
  4.          */
  5.         public static void main(String[] args) {
  6.                 ArrayList lst=new ArrayList();
  7.                 lst.add(4);
  8.                 lst.add(8);
  9.                 lst.add(6);
  10.                 lst.add(3);
  11.         
  12.                int len = lst.size();  
  13.                 for(int i = 0; i < len - 1; i++) {  
  14.                     int min =(Integer) lst.get(i);
  15.                     for(int j = i ; j < len; j++) {
  16.                             int max=(Integer) lst.get(j);
  17.                         if(min >(Integer)lst.get(j)) {
  18.                                 lst.add(j,min) ;
  19.                              lst.add(i,max);
  20.                         }  
  21.                     }  
  22.                      
  23.                 }  
  24.                 for(int i = 0; i < len; i++) {  
  25.                     System.out.print(lst.get(i) + " ");  
  26.                 }
  27.         }
  28. }
复制代码

为什么当最后一个数变化时,排序结果就变了!

3 个回复

倒序浏览
如果你外层循环min的值比内层循环max的值大,便会在索引外j的地方插入最大值,那么lst集合就会变大,我发现lst.add方法不是替换,就是插入了一个值,但是len长度还是4 8大,如果把8插入到第3个,就不进lst.add了,
回复 使用道具 举报
Bule丶 发表于 2014-7-30 23:25
如果你外层循环min的值比内层循环max的值大,便会在索引外j的地方插入最大值,那么lst集合就会变大,我发现 ...

哦哦 谢谢 add是增加一个值,最后的大了,不进条件就会出错!加个好友吧:)
回复 使用道具 举报
以前我也遇到过这样的问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马