面试中有一道题要求合并两个ArrayList链表并排序
2015-03-02 17:29
411 查看
该问题很简单,但是却很有深意,上次见识了List的强大功能之后,我思考问题开始往java API上考虑,毕竟并不是所有的问题都需要绞尽脑汁去想算法。
为此个人实现如下:
/**合并数据,并按照从小到大排序*/
public class SortDemo {
public static void main(String[] args) {
List<Object> startList=new ArrayList<Object>();
List<Object> endList=new ArrayList<Object>();
startList.add(1);
startList.add(7);
startList.add(3);
startList.add(5);
startList.add(9);
//------------------
endList.add(2);
endList.add(3);
endList.add(7);
endList.add(3);
endList.add(9);
Object[] countList=compare(startList, endList);
for(int i=0;i<countList.length;i++){
System.out.print(countList[i]);
}
}
public static Object[] compare(List<Object> startList,List<Object> endList){
startList.addAll(endList);
Object[] objects=startList.toArray();
Arrays.sort(objects);
return objects;
}如果放在以前我的想法肯定是专门设计一套排序方式,如:冒泡排序或者选择排序,当然这些都是很熟悉的方式,也很容易写出,但是我在本次笔试中选择了上面的方式实现。
当然,对于如何比较相关的程序孰优孰劣,可以通过执行时间来判断。
但是当写出这段代码时,个人还是小有成就感的。
为此个人实现如下:
/**合并数据,并按照从小到大排序*/
public class SortDemo {
public static void main(String[] args) {
List<Object> startList=new ArrayList<Object>();
List<Object> endList=new ArrayList<Object>();
startList.add(1);
startList.add(7);
startList.add(3);
startList.add(5);
startList.add(9);
//------------------
endList.add(2);
endList.add(3);
endList.add(7);
endList.add(3);
endList.add(9);
Object[] countList=compare(startList, endList);
for(int i=0;i<countList.length;i++){
System.out.print(countList[i]);
}
}
public static Object[] compare(List<Object> startList,List<Object> endList){
startList.addAll(endList);
Object[] objects=startList.toArray();
Arrays.sort(objects);
return objects;
}如果放在以前我的想法肯定是专门设计一套排序方式,如:冒泡排序或者选择排序,当然这些都是很熟悉的方式,也很容易写出,但是我在本次笔试中选择了上面的方式实现。
当然,对于如何比较相关的程序孰优孰劣,可以通过执行时间来判断。
但是当写出这段代码时,个人还是小有成就感的。
相关文章推荐
- 面试 14:合并两个排序链表
- 有a,b两个已按学号升序排序的链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,仍按学号升序排列。
- 【剑指Offer面试编程题】题目1519:合并两个排序的链表--九度OJ
- 剑指offer面试17 合并两个排序的链表
- 【剑指Offer面试编程题】题目1519:合并两个排序的链表--九度OJ
- 【C++】合并两个排序的链表,要求合并后仍然是有序的
- 面试之路(29)-合并两个排序的链表(递归和非递归)
- 面试之路(29)-合并两个排序的链表(递归和非递归)
- 面试之路(29)-合并两个排序的链表(递归和非递归)
- 【面试题17】合并两个排序的链表
- 面试之路(29)-合并两个排序的链表(递归和非递归)
- 面试算法(十六)合并两个排序的链表
- 有a,b两个已按学号升序排序的链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,仍按学号升序排列。
- 合并两个排序好的链表/链表去重/链式快排
- 题目1519:合并两个排序的链表
- 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列
- 《剑指offer》面试题17—合并两个排序链表
- 已知m和n是已经排序好的数组,从小到大,现在要合并这两个数组内的数到一个数组,仍然要求是从小到大排序
- 合并两个排序链表--迭代和递归分别实现
- 题目1519:合并两个排序的链表-九度