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 
  • 相关阅读:
    topcoder srm 633 div1
    HDU 4997 Biconnected (状态压缩DP)
    HDU 5013 City Tour
    BZOJ 3672 [Noi2014]购票 (熟练剖分+凸壳维护)
    BZOJ 1488: [HNOI2009]图的同构 polay
    BZOJ 1565 植物大战僵尸(最大权闭合图)
    iOS加载程序视图的方式
    内存管理2(主讲MRR)
    内存管理1
    排序算法之希尔排序
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12822329.html
Copyright © 2011-2022 走看看