leetcode笔记--Insertion Sort List
2016-02-19 18:50
423 查看
题目:难度(Medium)
Sort a linked list using insertion sort.
Tags:Linked List Sort
Similar Problems:(M) Sort List
分析:使用插入排序进行排序,插入排序:直接插入排序O(n2)、折半插入排序O(n2)、希尔排序O(nlogn)、归并排序O(nlogn)
我采用直接插入排序。该算法的基本操作是:将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表
初始时,第一个记录可看成是一个有序表,然后从第二个记录起逐个插入,直至整个序列按关键字非递减排列
为方便操作,为排好序的链表装上一个“头节点”
代码实现:
Sort a linked list using insertion sort.
Tags:Linked List Sort
Similar Problems:(M) Sort List
分析:使用插入排序进行排序,插入排序:直接插入排序O(n2)、折半插入排序O(n2)、希尔排序O(nlogn)、归并排序O(nlogn)
我采用直接插入排序。该算法的基本操作是:将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表
初始时,第一个记录可看成是一个有序表,然后从第二个记录起逐个插入,直至整个序列按关键字非递减排列
为方便操作,为排好序的链表装上一个“头节点”
代码实现:
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def insertionSortList(self, head): """ :type head: ListNode :rtype: ListNode """ if head is None or head.next is None: return head #为方便操作,为排好序的链表装上一个“头节点” head1 = ListNode(0) #head1.next = None q = head #q为当前要插入的元素 while q is not None: #注意:在insertInToSortedList的第2个参数node即此循环中的q,由于insertInToSortedList的最后一句node.next = q #改变的node.next的指向即本循环中q.next的指向,所以必须先记录下本循环中q的指向,以防丢失q的指向 #故在此添加node = q q = q.next语句,否则会报错 node = q q = q.next head1 = self.insertInToSortedList(head1, node) return head1.next #向带有头节点的有序表中插入一个节点 def insertInToSortedList(self, head, node): p = head q= head.next while q is not None: if q.val > node.val: break else: p = q q = q.next #此时p指向要插入的位置的前驱,q为要插入位置的后继 p.next = node node.next = q return head
相关文章推荐
- 【BZOJ 1013】【JSOI2008】球形空间产生器sphere 高斯消元基础题
- 火狐表格错乱兼容性问题
- [Protractor] Running tests on multiple browsers
- 【spider】之 Scrapy初次体验
- Java认证考试实例疑难辨析(10)
- 简单代码收集
- 从视频中获取每一帧图片(包括第一帧)
- leetcode第19题——*Remove Nth Node From End of List
- ZOJ-2970-Faster, Higher, Stronger【5th浙江省赛】
- mybatis 技术总结
- BZOJ 2588: Spoj 10628. Count on a tree|主席树
- 聊聊promise
- 成功的背后!(给所有IT人)
- leetcode笔记--Add Two Numbers
- install grub-customizer in ubuntu14.04
- 程序出错后 程序员给测试人员的20条高频回复
- ThinkPHP - 自定义标签库 - 标签驱动
- golang走起(三)list简单使用和interface{}
- CDZSC_2016寒假个人赛(2)-G(模拟)
- BZOJ-2326 数学作业 矩阵乘法快速幂+快速乘