首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

算法:98.链表排序

https://www.lintcode.com/problem/sort-list/description

描述

在 O(nlogn) 时间复杂度和常数级的空间复杂度下给链表排序。

样例

给出,给它排序变成.

挑战

分别用归并排序和快速排序做一遍。

思路

简单的插入排序,先将节点从链表中分离出来,然后从头开始比较,找到合适的位置再插入。O(n^2)的时间复杂度。

上面的实现简单,但效率较低,是O(n^2)的时间复杂度。

合并排序:

合并排序还是容易实现非递归的,步长从1逐渐增长到1/2,完成合并。外层循环为logn,循环内部需要实现一个logn的链表截取,logn的链表合并。整体是logN*logN,算是实现了挑战。

快速排序递归版本:

快速排序的非递归实现没有想到好的实现,使用了递归,所需的额外空间就不是常数级了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180822G1MXZQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券