[学习总结][算法]用插入排序对一个链表进行排序
来源:互联网 发布:java开源短信平台 编辑:程序博客网 时间:2024/05/29 17:27
做LeetCode时遇到的一个小问题,总结一下。
链表定义为如下
public class ListNode {
int val;ListNode next;
ListNode(int x) { val = x; }
}
要求用插入排序对其进行排序,并返回第一个节点。
解决方案的代码如下:
public class Solution {
public ListNode insertionSortList(ListNode head) {
//处理特殊情况
if(head == null) {
return head;
}
//定义helper节点,在下面它会被插到链表的开头,作为链表新的开头,可以方便的使用
ListNode helper = new ListNode(0);
//1.因为是单向的链表,所以插入项的前一项要被记录2.用它来遍历已经排序的项依次与插入项比较,得到插入位置
ListNode pre = helper;
//定义插入节点,开始时为head
ListNode ins = head;
//定义一个next节点来在循环中保存插入项的下一个节点
ListNode next = null;
while(ins != null) {
next = ins.next;
//此循环第一次循环时把helper加到链表前面,后续的循环,把每个插入项插到正确的位置
while(pre.next != null && pre.next.val < ins.val) {
pre = pre.next;
}
ins.next = pre.next;
pre.next = ins;
pre = helper;
ins = next;
}
return helper.next;
}
}
- [学习总结][算法]用插入排序对一个链表进行排序
- LeetCode147_Insertion Sort List(用插入排序算法对链表进行排序) Java题解
- C语言:用插入排序算法对一个数组进行排序
- 对给定链表进行插入排序。
- 对链表数据进行插入排序
- 对链表排序,用插入排序
- 对一个链表的插入排序
- 学习《算法导论》第一章 插入排序 总结
- 选择排序算法---对一个数组进行选择排序
- 冒泡排序算法----对一个数组进行冒泡排序
- 插入排序进行链表排序
- 链表进行插入排序
- 用直接插入排序法对单链表进行排序
- 算法学习-插入排序
- C语言:用快速排序算法对一个数组进行排序
- 插入一个数,进行插入排序
- 对链表进行排序
- 对链表进行排序
- Linux命令大全
- NaN和Infinity
- 网易游戏技术岗在线编程题(一)
- C\C++面试题
- color.xml文件
- [学习总结][算法]用插入排序对一个链表进行排序
- Android NDK学习 <一> 简介
- 正则表达式
- ViewPager 详解(一)---基本入门
- Linux-进程、进程组、作业、会话、控制终端详解
- java堆的结构,以及堆中的永久代
- 调试simple_pjsua.c,注册SIP服务器
- Unity3D 基础篇-Camera
- 使用Selector API实现购物车客户端计算