- 浏览: 184927 次
- 性别:
- 来自: 济南
文章分类
最新评论
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; } }
发表评论
-
498. Diagonal Traverse
2019-11-15 13:52 270Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 271You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 389Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 379Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 503Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 568Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 483Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 668Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 473The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 434Given an unsorted integer array ... -
Spiral Matrix
2016-03-04 03:39 584Given a matrix of m x n element ... -
Trapping Rain Water
2016-03-04 02:54 590Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 429All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 905Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 935Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 606Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 692Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 858Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 789You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 723For a undirected graph with tre ...
相关推荐
python python_leetcode题解之147_Insertion_Sort_List
javascript js_leetcode题解之147-insertion-sort-list.js
C#,单向链表(Simply Linked List)的插入排序(Insertion Sort)算法与源代码 所谓插入排序法乃是将一个数目插入该占据的位置。 假设我们输入的是 “5,1,4,2,3” 我们从第二个数字开始,这个数字是1,我们的...
在Python中,内置的`sorted()`函数和`list.sort()`方法使用了Timsort,这是一种混合排序算法,它结合了插入排序和其他高效的排序算法,既保证了稳定性,又能处理大部分情况下的性能问题。但在学习和理解排序算法时,...
* [Linked List](https://github.com/kamyu104/LeetCode#linked-list) * [Stack](https://github.com/kamyu104/LeetCode#stack) * [Queue](https://github.com/kamyu104/LeetCode#queue) * [Heap]...
#Insertion Sort 这些挑战将涵盖插入排序,一种简单直观的排序算法。 我们将首先从一个已经排序的列表开始。 #Insert element into sorted list 给定一个排序列表,在最右边的单元格中有一个未排序的数字 V,你能...
**1.12 Insertion Sort List (147)** - **问题描述**:对链表进行插入排序。 - **解题思路**: - 创建一个虚拟头节点,用于记录排序后的链表起始位置。 - 依次将原链表中的节点插入到已排序部分的适当位置。 **...
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 ...
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 08/18 Unique Paths 应该是简单的数学排列组合问题,提炼一下其实就一句话:有m个黑球,n个白球,有多少种不同的排列方式。...Insertion Sort List 在这里遇到前所未遇的惨败——提交了
在`main`函数中,我们创建了一个未排序的数组,并调用`insertionSort`对其进行排序,最后打印排序后的结果。 至于提供的文件名"Sorted-list-for-insersion-sort-main",这可能是一个C++项目的主要源代码文件,包含...
8. **Insertion sort list** (插入排序列表): 插入排序是基础排序算法之一,这里要求在链表上实现。在Java中,需要遍历链表并逐个插入新元素,保持已排序部分的有序性。 9. **Binary Tree Postorder Traversal** ...
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 >= 0 and sort_list[j] > key: sort_list...
sortList = self.sortList for i in range(len(sortList)): minIndex = i for j in range(i + 1, len(sortList)): if sortList[minIndex] > sortList[j]: minIndex = j if minIndex != i: self.swap(sort...
4. 折半插入排序(Binary Insertion Sort):在插入排序的基础上,利用二分查找法确定插入位置,提高了插入效率,但基本时间复杂度仍为O(n^2),但常数因子较小,对于接近有序的数组,性能提升显著。 排序算法的选择...
### 直接插入排序(Insertion Sort) 直接插入排序的基本思想是:将一个记录插入到已排序好的有序表中,从而得到一个新的、记录增1的有序表。初始时认为数组的第一个元素是一个有序子数组。从第二个元素开始,逐个...
在给定的文件中,介绍了几种排序算法,包括插入排序(Insertion Sort)、合并排序(Merge Sort)和快速排序(Quick Sort)。以下是对这些知识点的详细说明。 **插入排序(Insertion Sort)** 插入排序的基本思想是...
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 ...
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...