`

Insertion Sort List

阅读更多
Sort a linked list using insertion sort.

题目的要求很简单,用插入排序来排序一个链表,不清楚插入排序的可以参考几种常见的排序算法。对于链表来说,每次都将当前待插入的节点与之前的有序序列进行比较,对于数组来讲,我们是将当前元素从后往前与有序数列比较的,这样可以保证排序是稳定的。因为链表只能从头节点开始,我们只能从头节点开始比较,因此链表的插入排序是不稳定的排序。代码如下:
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode insertionSortList(ListNode head) {
        ListNode helper = new ListNode(0);
        while(head != null) {
            ListNode node = helper;
            while(node.next != null && node.next.val < head.val) {
                node = node.next;
            }
            ListNode tem = head.next;
            head.next = node.next;
            node.next = head;
            head = tem;
        }
        return helper.next;
    }
}
分享到:
评论

相关推荐

    python-leetcode题解之147-Insertion-Sort-List

    python python_leetcode题解之147_Insertion_Sort_List

    js-leetcode题解之147-insertion-sort-list.js

    javascript js_leetcode题解之147-insertion-sort-list.js

    C#,单向链表(Simply Linked List)的插入排序(Insertion Sort)算法与源代码

    C#,单向链表(Simply Linked List)的插入排序(Insertion Sort)算法与源代码 所谓插入排序法乃是将一个数目插入该占据的位置。 假设我们输入的是 “5,1,4,2,3” 我们从第二个数字开始,这个数字是1,我们的...

    基于python的排序算法-插入排序Insertion Sort

    在Python中,内置的`sorted()`函数和`list.sort()`方法使用了Timsort,这是一种混合排序算法,它结合了插入排序和其他高效的排序算法,既保证了稳定性,又能处理大部分情况下的性能问题。但在学习和理解排序算法时,...

    LeetCode最全代码

    * [Linked List](https://github.com/kamyu104/LeetCode#linked-list) * [Stack](https://github.com/kamyu104/LeetCode#stack) * [Queue](https://github.com/kamyu104/LeetCode#queue) * [Heap]...

    InsertionSort:使用插入排序算法将整数插入排序列表的 Java 程序

    #Insertion Sort 这些挑战将涵盖插入排序,一种简单直观的排序算法。 我们将首先从一个已经排序的列表开始。 #Insert element into sorted list 给定一个排序列表,在最右边的单元格中有一个未排序的数字 V,你能...

    Leetcode答案(c++版)

    **1.12 Insertion Sort List (147)** - **问题描述**:对链表进行插入排序。 - **解题思路**: - 创建一个虚拟头节点,用于记录排序后的链表起始位置。 - 依次将原链表中的节点插入到已排序部分的适当位置。 **...

    看leetcode吃力-my-learning-note:大三下学期之资料结构与演算法课程内容与练习

    Insertion Sort List 完成作业Quick sort Week6 10/11 国庆弹性放假 Week7 完成作业Heap sort Week8 完成作业Merge sort Week9 Week10 完成作业Binary Search Tree Week11 Week12 完成作业Hash table Week13 Week14 ...

    lrucacheleetcode-leetcode:leetcode

    147-Insertion Sort List, 148-Sort List(Mergesort), 215-Kth Largest element in an Array(Heap Sort), HARD: 218-The Skyline Problem(Mergesort) ) 动态规划 HARD: 174-Dungeon Game, HARD: 188

    leetcode答案-leetcode:leetcode

    leetcode 答案 leetcode 08/18 Unique Paths 应该是简单的数学排列组合问题,提炼一下其实就一句话:有m个黑球,n个白球,有多少种不同的排列方式。...Insertion Sort List 在这里遇到前所未遇的惨败——提交了

    Sorted-list-for-insersion-sort:插入排序列表Q1

    在`main`函数中,我们创建了一个未排序的数组,并调用`insertionSort`对其进行排序,最后打印排序后的结果。 至于提供的文件名"Sorted-list-for-insersion-sort-main",这可能是一个C++项目的主要源代码文件,包含...

    leetcode-answer-and-analysis(part).zip_图形图像处理_Java_

    8. **Insertion sort list** (插入排序列表): 插入排序是基础排序算法之一,这里要求在链表上实现。在Java中,需要遍历链表并逐个插入新元素,保持已排序部分的有序性。 9. **Binary Tree Postorder Traversal** ...

    Python实现各种排序.doc

    def insertion_sort(sort_list): iter_len = len(sort_list) if iter_len return sort_list for i in range(1, iter_len): key = sort_list[i] j = i - 1 while j &gt;= 0 and sort_list[j] &gt; key: sort_list...

    使用Python实现五大排序算法,算法数据结构

    sortList = self.sortList for i in range(len(sortList)): minIndex = i for j in range(i + 1, len(sortList)): if sortList[minIndex] &gt; sortList[j]: minIndex = j if minIndex != i: self.swap(sort...

    Double_List_and_Sort.rar_双链表

    4. 折半插入排序(Binary Insertion Sort):在插入排序的基础上,利用二分查找法确定插入位置,提高了插入效率,但基本时间复杂度仍为O(n^2),但常数因子较小,对于接近有序的数组,性能提升显著。 排序算法的选择...

    C# Sort DS

    ### 直接插入排序(Insertion Sort) 直接插入排序的基本思想是:将一个记录插入到已排序好的有序表中,从而得到一个新的、记录增1的有序表。初始时认为数组的第一个元素是一个有序子数组。从第二个元素开始,逐个...

    searching, sorting (part 1 - selection sort, bubble sort)

    在给定的文件中,介绍了几种排序算法,包括插入排序(Insertion Sort)、合并排序(Merge Sort)和快速排序(Quick Sort)。以下是对这些知识点的详细说明。 **插入排序(Insertion Sort)** 插入排序的基本思想是...

    数据结构常用算法c++实现

    Insertion sort Radix sort Quick sort Merge sort Heap sort Double linked list Skip list Self-organized linked-list ops (move-to-front, move-ahead-one) Largest common sequence Binary search tree ...

    Data.Structures.and.Algorithms.USING.C

    22. Insertion Sort 23. Selection Sort 24. Merge Sort Algorithm 25. Shell Sort 26. Quick Sort GRAPH DATA STRUCTURE 27. Graphs 28. Depth First Traversal 29. Breadth First Traversal TREE DATA STRUCTURE...

Global site tag (gtag.js) - Google Analytics