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 
  • 相关阅读:
    Don‘t Cry for Me, Argentina
    对象池
    拒绝高姿态
    SOS: How to popup a HwndSource on topmost
    关于设计和设计文档的2个补充
    从今天开始写博客
    Kafka+Storm写入Hbase和HDFS
    工作流调度引擎Oozie
    showModalDialog在父窗体和子窗体之间传值
    慢说HttpContext
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12822329.html
Copyright © 2011-2022 走看看