package algorithms; /** * @Auther: Jesper * @Date: 2019/2/13 15:42 * @Description: åé¾è¡¨çå¿«æ * * æä»¬åªéè¦ä¸¤ä¸ªæép1åp2ï¼è¿ä¸¤ä¸ªæéåå¾nextæ¹åç§»å¨ï¼ç§»å¨çè¿ç¨ä¸ä¿æp1ä¹åçkeyé½å°äºéå®çkeyï¼p1åp2ä¹é´çkeyé½å¤§äºéå®çkeyï¼é£ä¹å½p2èµ°å°æ«å°¾æ¶äº¤æ¢p1ä¸keyå¼ä¾¿å®æäºä¸æ¬¡ååã */ public class QuickSortList { class ListNode { ListNode next; int val; } public ListNode sortList(ListNode head){ //éç¨å¿«éæåº quickSort(head, null); return head; } public static void quickSort(ListNode head, ListNode end){ if (head != end){ ListNode node = partion(head, end); quickSort(head, node); quickSort(node.next, end); } } public static ListNode partion(ListNode head, ListNode end){ ListNode p1 = head, p2 = head.next; //èµ°å°æ«å°¾æå while (p2 != end){ //大äºkey弿¶ï¼p1ååèµ°ä¸æ¥ï¼äº¤æ¢p1ä¸p2çå¼ if (p2.val < head.val){ p1 = p1.next; int temp = p1.val; p1.val = p2.val; p2.val = temp; } p2 = p2.next; } //å½æåºæ¶ï¼ä¸äº¤æ¢p1åkeyå¼ if (p1 != head){ int temp = p1.val; p1.val = head.val; head.val = temp; } return p1; } }