zoukankan      html  css  js  c++  java
  • Leetcode练习(Python):链表类:第147题:对链表进行插入排序:插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。

    题目:
    对链表进行插入排序:插入排序算法:  插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。  
    思路:
    使用数组,也属于懒人做法,最后使用尾插法来插入节点。
    程序:
    # 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:
            if not head:
                return None
            myNode = head
            myList = []
            while myNode:
                myList.append(myNode)
                myNode = myNode.next
            length = len(myList)
            for index1 in range(1, length):
                index2 = index1
                while index2 > 0:
                    if myList[index2].val < myList[index2 - 1].val:
                        tmp = myList[index2]
                        myList[index2] = myList[index2 - 1]
                        myList[index2 - 1] = tmp
                    else:
                        break
                    index2 -= 1
            myNewNode = ListNode(0)
            myNewHead = myNewNode
            for index3 in myList:
                myNewHead.next = index3
                index3.next = None
                myNewHead = index3
            return myNewNode.next 
  • 相关阅读:
    python爬虫
    RMQ算法
    组合数
    水池数目
    jQuery 拼接事件
    ORACLE
    day 75
    day74 vue框架
    day73 vue框架
    day 72 vue框架
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12822329.html
Copyright © 2011-2022 走看看