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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 十万一千 于 2014-11-21 13:37 编辑
  1. package com.itheima.test3;

  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Random;

  5. public class List自定义排序 {
  6.         // 6、 编写程序,生成5个1至10之间的随机整数,存入一个List集合,
  7.         // 编写方法对List集合进行排序(自定义排序算法,禁用Collections.sort方法和TreeSet),然后遍历集合输出。
  8.         @SuppressWarnings("serial")
  9.         public static void main(String[] args) {
  10.                 long s = System.currentTimeMillis();
  11.                 Random random = new Random();
  12.                 List<Integer> list = new ArrayList<Integer>() {
  13.                         /* 覆写list对象的add(E e) 方法 */
  14.                         @Override
  15.                         public boolean add(Integer e) {
  16.                                 for (int i = 0; i < this.size(); i++) {
  17.                                         if (this.get(i) >= e) {
  18.                                                 add(i, e);
  19.                                                 return true;
  20.                                         }
  21.                                 }
  22.                                 return super.add(e);
  23.                         }
  24.                 };
  25.                 for (int i = 0; i < 15000; i++) {
  26.                         list.add(random.nextInt(100) + 1);
  27.                 }
  28.                 // 通过时间对比,该算法中,ArrayList效率在1w左右的数据量的时候远远高于LinkedList
  29.                 System.out.println(System.currentTimeMillis() - s);
  30.                 System.out.println(list);
  31.         }
  32. }
复制代码

ps:代码稍微修改了下if (this.get(i) > e) -> if (this.get(i) >= e)

13 个回复

倒序浏览
这个思路太好了,点个赞!
回复 使用道具 举报
godmmm 发表于 2014-11-21 11:37
这个思路太好了,点个赞!

呵呵呵  多谢点赞!
回复 使用道具 举报
很好啊- -一般思路都是先把元素加入集合然后排序,你这个直接是复写add方法在加的时候直接找到位置加进去了,代码简化了而且效率也很高,点个赞
回复 使用道具 举报 1 0
是个不错的想法
回复 使用道具 举报
的确很不错,受教了
回复 使用道具 举报
楼主果然好思想啊,看好你哦
回复 使用道具 举报
wf111sxwf 发表于 2014-11-21 15:12
楼主果然好思想啊,看好你哦

:lol  相互学习了。。。
回复 使用道具 举报
我什么时候才能赶上大神的脚步呢?:dizzy:
回复 使用道具 举报
赞一个{:3_53:}
回复 使用道具 举报
郑飞 高级黑马 2014-11-21 19:34:55
11#
好点子 赞一个{:2_36:}
回复 使用道具 举报

呵呵 谢谢了  嗯 希望有更多好东西一起交流哈
回复 使用道具 举报
果然牛。。。我用数组做的,不知道符合题意不?
  1. public static void Paixu(List<Integer> list){
  2.                 int [] arr=new int[list.size()];
  3.                 for(int x=0;x<list.size();x++){
  4.                         arr[x]=list.get(x);
  5.                         }
  6.                 for(int x=0;x<arr.length-1;x++){
  7.                         for(int y=0;y<arr.length-1-x;y++){
  8.                                 if(arr[y]>arr[y+1]){
  9.                                         int temp=arr[y];
  10.                                         arr[y]=arr[y+1];
  11.                                         arr[y+1]=temp;
  12.                                 }
  13.                         }
  14.                 }
  15.                 for(int x=0;x<arr.length;x++){
  16.                         System.out.println(arr[x]);
  17.                         list.add(Integer.valueOf(arr[x]));
  18.                 }
  19.                
  20.         }
复制代码



回复 使用道具 举报
xiaguangcheng 发表于 2014-11-21 22:04
果然牛。。。我用数组做的,不知道符合题意不?

行:17   可以修改下吧。。。        list.add(arr[x]);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马