python练习——插入排序

冒泡排序练习——合并区间、颜色分类

插入排序

插入排序,给出一条链表,从头开始遍历,将每次遍历的节点取出,插入到从此节点开始往前至第一个节点之间合适的位置。例如一条链表为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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值