300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Insertion Sort List(单链表插入排序)

Insertion Sort List(单链表插入排序)

时间:2020-09-24 12:29:23

相关推荐

Insertion Sort List(单链表插入排序)

来源:/problems/insertion-sort-list

Sort a linked list using insertion sort.

方法:

1. 使用一个preHead指向头节点,这样在将节点插入头节点前面时(即某个节点值比头节点小)不需要进行特殊处理

2. 从头节点开始遍历,如果当前节点的下一个节点的值比当前节点的值大,就从头开始遍历找到第一个比当前节点的下一个节点的值大的节点,并插入到它的前面,注意插入时需要同时处理节点移出位置和插入位置的指针。

直接插入排序:

时间复杂度,平均O(n^2),最好O(1),此时节点本身有序,最坏O(n^2)

空间复杂度,需要的辅助存储为O(1)

稳定性,稳定,值相同的元素在排序后相对顺序保持不变

1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 *int val; 5 *ListNode next; 6 *ListNode(int x) { val = x; } 7 * } 8 */ 9 class Solution {10public ListNode insertionSortList(ListNode head) {11 ListNode preHead = new ListNode(0);12 ListNode next = null, node = null, tmpNode = null;13 preHead.next = head;14 while(head != null) {15 next = head.next;16 if(next != null && next.val < head.val) {17 node = preHead;18 while(node.next != null && node.next.val <= next.val) {19 node = node.next;20 }21 tmpNode = node.next;22 node.next = next;23 head.next = next.next;24 next.next = tmpNode;25 } else {26 head = head.next;27 }28 }29 return preHead.next;30}31 }// 8 ms

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。