[快速排序]148. Sort List
2020-07-02 22:31
78 查看
Sort a linked list in O(n log n) time using constant space complexity.
Example 1:
Input: 4->2->1->3
Output: 1->2->3->4
Example 2:
Input: -1->5->3->4->0
Output: -1->0->3->4->5
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode sortList(ListNode head) { List<Integer> list=new ArrayList<>(); while(head!=null) { list.add(head.val); head=head.next; } switch(list.size()){ case 0:return null; case 1:return new ListNode(list.get(0)); default:{ quickSort(0, list.size()-1, list); ListNode listNode=new ListNode(0); ListNode cur=listNode; for(int i=0;i<list.size();i++) { ListNode list1=new ListNode(list.get(i)); cur.next=list1; cur=list1; } return listNode.next; } } } void quickSort(int sta,int end,List<Integer> list) { if(sta>end)return ; int i=sta,j=end,base=list.get(sta); while(i<j) { while(j>i&&list.get(j)>=base)j--; while(i<j&&list.get(i)<=base)i++; if(i<j) { int temp=0; temp=list.get(i); list.set(i, list.get(j)); list.set(j, temp); } } list.set(sta, list.get(i)); list.set(i,base); quickSort(sta, i-1, list); quickSort(i+1, end, list); } }
自己手写快速排序,算是个不错的练习吧,虽然效率不高。。hhh
相关文章推荐
- [LeetCode] 148. Sort List 链表排序
- 不使用遍历循环、Linq与Lamba表达式快速对List集合进行筛选与排序——在集合类里使用Find、FindAll与Sort
- LeetCode 148. Sort List 单链表排序 Python Solution
- LeetCode 148. Sort List--O(nlogn)时间复杂度和常数空间复杂度给链表排序
- [leetcode] 【排序】 148. Sort List
- 148. Sort List (java 给单链表排序)
- LeetCode 148. Sort List(链表排序)
- 148. Sort List 链表排序(C++)
- LeetCode 148.Sort List 链表排序
- java List 排序 Collections.sort() 对 List 排序
- LeetCode147_Insertion Sort List(用插入排序算法对链表进行排序) Java题解
- LeetCode-Sort List 链表排序
- 148. Sort List (python)
- 通过Collections.sort 给 List 排序
- C#之IComparable用法,实现List<T>.sort()排序
- java List 排序 Collections.sort() 对 List 排序
- List.Sort()排序
- 148. Sort List(快排、归并)
- C# 利用list.sort()进行排序
- C#中List的排序用法(Sort)