LeetCode-04:实现链表的插入排序

题目

使用插入排序对链表进行排序。
Sort a linked list using insertion sort.

输入
{3,2,4}

输出
{2,3,4}

思路

1、若要实现插入排序,则需要先明白插入排序的原理。通俗讲便是将一个无序的数组(链表)插入有序的数组(链表)中,详细做法为:将无序数组的第一个元素切割出来作为有序数组的第一个元素,再将无序数组的第二个元素切割出来插入有序数组的相应位置,再将…,直至切割完整个无序数组。
2、本题思想,构建一个新的链表头,将原链表中的结点依次插入新链表中。
3、本题重点,构建一个新链表头,该链表头成为哑结点(ListNode dummy),该头结点不存储元素,而是始终指向首个结点,用来定位。
4、本题代码中,While循环里的插入节点操作时通用的,无论是首个结点的插入,或是中间结点的插入,亦或是尾结点的插入,都是可行的。

Ps:
常见算法比较
冒泡:每次遍历前n个元素,前后两两比较筛选出最大的元素放在数组尾,再n- -。
选择:每次遍历后n个元素,将首个元素与其他元素比较选取最小的元素放在首位,再n- -。

代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值