单链表的排序
时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
题目描述:给定一个无序单链表,实现单链表的排序(按升序排序)。
输入实例:
[1,3,2,4,5]
输出实例:
[1,2,3,4,5]
思路:
对链表排序可以使用冒泡,选择,不能使用快排。
此题使用选择会超时,可以将链表中值提取出来,使用快速排序排好,在存入链表中。
代码:
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head ListNode类 the head node * @return ListNode类 */ public ListNode sortInList (ListNode head) { // write code here // boolean bool=true; // while(bool){ // bool=false; // for(ListNode ln1=head;ln1.next!=null;ln1=ln1.next){ // if(ln1.next!=null&&ln1.val>ln1.next.val){ // int val=ln1.val; // ln1.val=ln1.next.val; // ln1.next.val=val; // bool=true; // } // } // } ArrayList<Integer> arrList=new ArrayList<Integer>(); ListNode ln; for(ln=head;ln!=null;ln=ln.next){ arrList.add(ln.val); } Collections.sort(arrList); int i; for(ln=head,i=0;ln!=null;ln=ln.next,i++){ ln.val=arrList.get(i); } return head; } }
欢迎关注公众号: