LeetCode Insertion Sort List

来源:互联网 发布:单身比例 知乎 编辑:程序博客网 时间:2024/06/11 04:00

题意:实现用链表写的插入排序

解法:注意每次进行“选择”那一步操作的时候,要先把当前这个点给独立出来,就是把前后的next都给割断

class ListNode {int val;ListNode next;ListNode(int x) {val = x;next = null;}}public class Solution {public ListNode insertionSortList(ListNode head) {ListNode hhead = new ListNode(-1);hhead.next = head;ListNode current = head, after, temp;while (current != null) {after = current.next;temp = hhead;while (temp.next != current)temp = temp.next;temp.next = null;temp = hhead;System.out.println("sorting : " + current.val);while (temp.next != null && temp.next.val < current.val) {temp = temp.next;}print(hhead);if (temp.next != current) {current.next = temp.next;temp.next = current;}print(hhead);temp = hhead;while (temp.next != null) {temp = temp.next;}temp.next = after;current = after;System.out.println();System.out.println();System.out.println();}return hhead.next;}public static void main(String[] args) {Solution s = new Solution();ListNode n1 = new ListNode(10);ListNode n2 = new ListNode(9);ListNode n3 = new ListNode(8);ListNode n4 = new ListNode(12);n1.next = n2;n2.next = n3;n3.next = n4;// s.insertionSortList(n1);print(s.insertionSortList(n1));}public static void print(ListNode head) {System.out.println("print");ListNode h = head;int cnt = 0;while (h != null && cnt < 10) {System.out.print(h.val + " ");cnt++;h = h.next;}System.out.println();System.out.println();}}


0 0
原创粉丝点击