给定一个无序单链表,实现单链表的排序(按升序排序)。
示例1
输入:
[1,3,2,4,5]
复制返回值:
{1,2,3,4,5}
过程比较麻烦,但还是比较好理解的,首先读取数据,读取链表的长度,将链表中的元素导入数组中,将数组进行排序,再将排序后的数组导成新的链表就可以了。
public ListNode sortInList (ListNode head) {
ListNode cur = head;
if (head == null){
return head;
}
int length = 0;
while(cur!=null){
length++;
cur = cur.next;
}
int[] arr = new int[length];
ListNode cur1 = head;
for (int i = 0;i<arr.length;i++){
arr[i] = cur1.val;
cur1 = cur1.next;
}
Arrays.sort(arr);
ListNode cur2 = head;
for (int i = 0;i<arr.length;i++){
cur2.val = arr[i];
cur2 = cur2.next;
}
return head;
}