冒泡排序练习——合并区间、颜色分类
插入排序
插入排序,给出一条链表,从头开始遍历,将每次遍历的节点取出,插入到从此节点开始往前至第一个节点之间合适的位置。例如一条链表为4->2->1->3,现在要将它进行升序排列,首先取出节点4,发现此时它的前方没有比它要大的节点,因此节点4的位置不变。然后将第二个节点2取出,发现它的前一个节点4比它大,因此将节点2插入到节点4之前,以此类推,将链表进行升序排列。简要流程如下所示
Leetcode合并区间
问题描述:
对链表进行插入排序。
示例:
输入:4->2->1->3
输出:1->2->3->4
思考:
具体代码如下
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def insertionSortList(self, head: ListNode) -> ListNode:
sort_list = ListNode(-inf)
sort_list.next = head
current_node = head
sort_list_copy = sort_list
while current_node != None:
if current_node.val >= sort_list.val:
sort_list = sort_list.next
current_node = sort_list.next
continue
sort_list.next = current_node.next
sort = sort_list_copy
while current_node.val >= sort.next.val:
sort = sort.next
current_node.next = sort.next
sort.next = current_node
current_node = sort_list.next
return sort_list_copy.next