Insertion Sort List 链表插入排序

地址:https://oj.leetcode.com/problems/insertion-sort-list/

public class Solution {
    	public ListNode insertionSortList(ListNode head) {
		if(head==null || head.next ==null){
			return head;
		}
		ListNode ans = new ListNode(head.val);
		ListNode pre = null;
		ListNode cur = ans;
		head = head.next;
		while(head!=null){
			cur = ans;
			pre = null;
			while(cur!=null &&  cur.val<head.val ){
				pre = cur;
				cur = cur.next;
			}
			if(pre == null){
				ListNode temp = new ListNode(head.val);
				temp.next = cur;
				ans = temp;
			}else {
				ListNode temp = new ListNode(head.val);
				pre.next = temp;
				temp.next = cur;
			}
			head = head.next;
		}
		return ans;
	}

}
时间: 2024-10-05 23:46:32

Insertion Sort List 链表插入排序的相关文章

[LeetCode]85. Insertion Sort List链表插入排序

Sort a linked list using insertion sort. Subscribe to see which companies asked this question 解法:设置3个指针:应插入位置的前一个节点first.当前处理节点third和其前一个节点second,设置辅助节点help指向头节点.然后从头节点的next节点开始遍历,一个个插入正确位置即可.注意在插入到新位置之前需要链接好second和third->next,防止链表断开. /** * Definitio

LeetCode Insertion Sort List 链表插入排序

题意:给一个链表,实现插入排序. 思路:O(1)空间,O(n*n)复杂度.将排好的用另一个链表头串起来,那个链表头最后删掉,再返回链表. 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 pub

147 Insertion Sort List 链表插入排序

用插入排序对链表进行排序. 详见:https://leetcode.com/problems/insertion-sort-list/description/ /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListN

【数据结构】算法 LinkList (Insertion Sort List 链表插入排序)

将一个单链表进行处理后,所得结果为一有序链表 Solution: 将原始链表逐个查询,插入新链表,在插入的同时对链表进行排序.时间复杂度O(n*n) public ListNode insertionSortList(ListNode head) { ListNode dummy = new ListNode(0); while (head != null) { ListNode node = dummy; while (node.next != null && node.next.val

insertion Sort List (链表的插入排序) leecode java

逻辑简单,代码难写,基础不劳,leecode写注释不能出现中文,太麻烦,我写了大量注释,链表问题最重要的就是你那个指针式干啥的 提交地址https://oj.leetcode.com/problems/insertion-sort-list/ /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; *

【链表】Insertion Sort List

题目: Sort a linked list using insertion sort. 思路: 插入排序是一种O(n^2)复杂度的算法,基本想法相信大家都比较了解,就是每次循环找到一个元素在当前排好的结果中相对应的位置,然后插进去,经过n次迭代之后就得到排好序的结果了.了解了思路之后就是链表的基本操作了,搜索并进行相应的插入.时间复杂度是排序算法的O(n^2),空间复杂度是O(1). /** * Definition for singly-linked list. * function Lis

排序算法一:插入排序(Insertion sort)

最近从网易公开课在看麻省理工学院的公开课<算法导论>,感觉还不错,接下来几篇文章所示学习日记了,不准备对算法细节做过多描述,感兴趣的可以自己去看. 文章分几篇讲经典排序算法,直接上代码,根据结果对算法性能有个直观了解.本篇先说插入排序(insertion sort). (一)算法实现 1 protected void sort(int[] toSort) { 2 if (toSort.length <= 1) { 3 return; 4 } 5 for (int i = 1; i <

【LeetCode】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; * next = null; * } * }

leetcode - [5]Insertion Sort List

Sort a linked list using insertion sort. 思路:插入排序 #include <iostream> using namespace std; struct ListNode { int val; ListNode *next; ListNode(int x): val(x), next(NULL) {} }; class Solution { public: ListNode *insertionSortList(ListNode *head) { if