1 题目

链表排序

2 解法

2.1 冒泡排序

/*** struct ListNode {*  int val;*   struct ListNode *next;* };*/class Solution {
public:/*** * @param head ListNode类 * @return ListNode类*/ListNode* sortList(ListNode* head) {// write code hereif (head) {ListNode* endNode = NULL;while (head != endNode) {ListNode* p = head;for (; p->next != endNode; p = p->next) {if (p->next->val < p->val) {int tmp = p->next->val;p->next->val = p->val;p->val = tmp;}}endNode = p;}}return head;}
};

性能一般:

2.2 选择排序

/*** struct ListNode {*  int val;*   struct ListNode *next;* };*/class Solution {
public:/*** * @param head ListNode类 * @return ListNode类*/ListNode* sortList(ListNode* head) {// write code hereif (head) {ListNode* startNode = head;while (startNode) {ListNode* switchNode = NULL;int min_value = startNode->val;for (auto p = startNode; p; p = p->next) {if (p->val < min_value) {min_value = p->val;switchNode = p;}}if (switchNode) {int tmp = switchNode->val;switchNode->val = startNode->val;startNode->val = tmp;}startNode = startNode->next;}}return head;}
};

性能同样一般:

2.3 插入排序

/*** struct ListNode {*  int val;*   struct ListNode *next;* };*/class Solution {
public:/*** * @param head ListNode类 * @return ListNode类*/ListNode* sortList(ListNode* head) {// write code hereif (head) {ListNode* inorderList = NULL;ListNode* unorderList = head;while (unorderList) {ListNode* firstUnorderedNode =getFirstUnorderedNode(unorderList);insertToOrderedList(inorderList, firstUnorderedNode);}head = inorderList;}return head;}ListNode* getFirstUnorderedNode(ListNode* &unorderedList) {ListNode* firstNode = unorderedList;unorderedList = unorderedList->next;firstNode->next = NULL;return firstNode;}void insertToOrderedList(ListNode* &orderedList, ListNode* &targetNode) {if (!orderedList || targetNode->val <= orderedList->val) {targetNode->next = orderedList;orderedList = targetNode;} else {ListNode* p = orderedList;while (p->next && p->next->val < targetNode->val) {p = p->next;}targetNode->next = p->next;p->next = targetNode;}}
};

性能好差劲:

2.4

leetcode 148 --- 链表排序相关推荐

  1. 冒泡链表排序java_链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)...

    以下排序算法的正确性都可以在LeetCode的链表排序这一题检测.本文用到的链表结构如下(排序算法都是传入链表头指针作为参数,返回排序后的头指针) struct ListNode { int val; ...

  2. 链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)

    这篇文章分析一下链表的各种排序方法. 以下排序算法的正确性都可以在LeetCode的链表排序这一题检测.本文用到的链表结构如下(排序算法都是传入链表头指针作为参数,返回排序后的头指针) struct ...

  3. 【编程4】插入排序+快速排序+LeetCode.148(排序链表)

    文章目录 一.排序链表 1.题目描述--LeetCode.148 2.分析 (1)一般的快排 (2)解题思路 3.实现 二.排序算法 三.插入排序 1.基本思想 (1)过程概述 (2)具体算法描述: ...

  4. 链表排序---迭代版本归并算法 + [leetcode]148. 排序链表

    前言: 对于链表来说,排序首选应该是归并算法 维基百科上有归并算法的迭代版本和递归版本 基于数组实现的. https://zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B ...

  5. 每周leetcode - 02链表专题 237/83/234/138/92/142/Offer 22/148/23/24/147/86/61/328/2/Offer06

    文章目录 leetcode - 237. 删除链表中的节点 leetcode - 83. 删除排序链表中的重复元素 leetcode - 234. 回文链表 leetcode - 138. 复制带随机 ...

  6. leetcode算法题--排序链表★

    原题链接:https://leetcode-cn.com/problems/sort-list/ 1.归并排序(递归版) ListNode* sortList(ListNode* head) {if( ...

  7. LeetCode 148. Sort List--面试算法题--C++,Python解法

    LeetCode 148. Sort List–面试算法题–C++,Python解法 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 大 ...

  8. 【归并排序+递归】LeetCode 148. Sort List

    LeetCode 148. Sort List Solution1:我的答案 很多递归 /*** Definition for singly-linked list.* struct ListNode ...

  9. 【阿里面试】链表排序总结

    题目:对单链表进行排序,要求不改变每个节点内的值. 1.首先自然而然地会想到快速排序,毕竟是一个经典的排序算法.但是在排序过程中要求不能改变节点中的值,就必须通过改变节点中的指针来交换节点.而且快速排 ...

最新文章

  1. Using ZipLib to create a Zip File in C#
  2. [控件] LabelView
  3. 1 时间序列基本概念
  4. zabbix3.0.4通过jmx监控tomcat
  5. Windows7 + Nginx + Memcached + Tomcat 集群 session 共享
  6. 小程序设置页面背景颜色
  7. CodeForces - 766C - Mahmoud and a Message dp
  8. 贪婪算法在解决哈夫曼树及编码问题中的应用
  9. 联想Z6 Pro 5G探索版官宣 常程:有5G才最6
  10. JavaScript面向对象:类、方法、属性
  11. 前年的斐波那契蹲在地上看着你,笑而不语
  12. win10家庭版添加“本地安全策略”
  13. 视觉-摄像机3】}摄像机镜头--焦距与视角(选相机和镜头)
  14. Discuz最全的常见问题及故障整理
  15. 程序员的算法趣题Q50: 完美洗牌
  16. 基于安卓/微信小程序的个人健康打卡系统
  17. 紫光同创国产FPGA学习之IP Compiler
  18. SQLyog重置试用时间
  19. 一款可以排查重复照片,清理多余照片的照片管理软件,使用PowerPhotos的图像浏览器快速查看照片
  20. ASO免费优化技巧:小米应用首发,小米aso优化怎么做

热门文章

  1. mysql查询数据为0的所有字段6_MySQL8.0 初级学习笔记(六)查询数据
  2. python基础笔记_python基础学习笔记
  3. javaweb教务管理系统_基于Java web的教务管理系统
  4. MATLAB Robotic Toolbox 机器人工具箱示例
  5. linux 监控网络IO、磁盘、CPU、内存
  6. 王爽 汇编语言第三版 第7章 --- 更灵活的定位内存地址的方法(可以理解为 数组形式的内存定位)
  7. Python爬虫四(正则表达式)
  8. web.py 十分钟创建简易博客
  9. 在python中使用什么工具管理模块_怎么使用Python pip(管理模块工具)
  10. php怎么上传函数,php上传函数怎么封装