实现一个无序列表插入到一个有序列表

安卓机器人 2012-07-11 10:50:04
目前想到两种思路:
a.序列先变成有序,然后再插入到有序列表
b.无序列表中的元素一个接一个插入有序列表

这个问题旨在讨论性能,请教各位还有什么其他的好的方法。
谢谢了!
...全文
590 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
安卓机器人 2012-07-12
  • 打赏
  • 举报
回复
是ArrayList
为啥呢 2012-07-12
  • 打赏
  • 举报
回复
关键是无序表的随机读取性能如何,如果这个性能高于排序,那就应该随机读取然后插入有序表,反之则应该先排序;
另外在插入有序表时,还应考虑随机写操作的性能,如果是自然顺序,应采用支持自然顺序的集合存储
brightyq 2012-07-12
  • 打赏
  • 举报
回复
无序列表,是什么列表?里面存什么数据。
如果存对象,就实现Comparable接口,重写compareTo方法,然后调用Arrays.sort方法了。
如果存的基本数据类型,就把无序的addAll进有序序列就可以了。
比如是Hashset的,addAll进TreeSet就好了。

wangdong20 2012-07-12
  • 打赏
  • 举报
回复
a的话序列先变成有序,然后再插入到有序列表
还是像归并排序那样要进行比较,归并过程(不包括先排序)的时间复杂度是O(n)
b.无序列表中的元素一个接一个插入有序列表
没有排序过程,但是因为是无序序列此时插入的时间复杂度是O(n*n)
我觉得如果无序列表元素很少的话,用a比较合适
如果无序列表元素比较多的话,还是用b吧
个人观点
为啥呢 2012-07-12
  • 打赏
  • 举报
回复
List接口是有序的,其随即读写性能与实现这个接口的类型标称如何,比如ArrayList的随机读写性能就要比LinkedList高,而有序读写性能则相反
所以必须确定你的List的具体实现类型,才能确定实现方式
安卓机器人 2012-07-12
  • 打赏
  • 举报
回复
这个列表是List<T>类型,泛型对象是自定义类实例
liuwons 2012-07-12
  • 打赏
  • 举报
回复
数据量很大的话,a的效率应该比b高的多
dqsweet 2012-07-11
  • 打赏
  • 举报
回复
将无序列表全部插入有序列表后,将无序部分排序

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧