当前位置: 首页 > news >正文

空间备案和网站备案网站开发 h5 h4

空间备案和网站备案,网站开发 h5 h4,郑州市发布,帝国cms怎么做网站地图归并排序 https://articles.zsxq.com/id_g23e5o3lg87e.html 目录 归并排序算法思想命名由来算法描述sortList函数mergeSort函数 源代码 算法思想 通过将当前乱序的数组分成两个部分,分别进行「递归调用」,利用两个指针将数据元素以此比较,选…

归并排序

https://articles.zsxq.com/id_g23e5o3lg87e.html

目录

  • 归并排序
    • 算法思想
    • 命名由来
    • 算法描述
      • sortList函数
      • mergeSort函数
    • 源代码

算法思想

通过将当前乱序的数组分成两个部分,分别进行「递归调用」,利用两个指针将数据元素以此比较,选择相对较小的元素放进「辅助数组」中,再将辅助数组的数据放回「原数组

命名由来

归并=递归+合并

算法描述

问题描述

leetcode第148题
给你链表的头结点 head,请将其按 升序 排列并返回排序后的链表。

sortList函数

先看sortList,此函数的目的是对链表进行归并排序

ListNode* sortList(ListNode* head) {if (head == nullptr)                   // 1return nullptr;else if (head->next == nullptr)        // 2return head;ListNode *slow = head, *fast = head;   // 3ListNode *pre = nullptr;               while (fast != nullptr){pre = slow;slow = slow->next;fast = fast->next;if (fast)fast = fast->next;}ListNode *tmp = pre->next;pre->next = nullptr;                   //4return mergeSort(head, tmp);           //5}

(1) 当链表没有元素的时候不需要排序,直接返回null;
(2) 当链表只有一个元素的时候也不需要排序,返回本身即可;
(3) 我们用快慢指针来找到链表的中间节点,并将链表分为两部分,分别是左半部分和右半部分;
(4) 此时我们就完成了对一个链表的切割,左边是以head为头结点的链表,右边则是以tmp指针为头结点的链表
(5) 调用 mergeSort 函数进行合并排序。

mergeSort函数

 ListNode* mergeSort(ListNode* a, ListNode* b){a = sortList(a);b = sortList(b);                 // 1ListNode* head = new ListNode(0); ListNode* tmp = head;            // 2head->next = nullptr;while (a || b)                   // 3{if (a == nullptr){tmp->next = b;break;}else if (b == nullptr){tmp->next = a;break;}else if (a->val < b->val){tmp->next = a;a = a->next;}else if (a->val >= b->val){tmp->next = b;b = b->next;}tmp = tmp->next;tmp->next = nullptr;}return head->next;                // 4}

(1) a 和 b 分别表示左边部分和右边部分,将 a 和 b 分别传入 sortList 函数中进行排序(递归调用);
(2) 创建一个新的头节点 head,以及一个临时节点 tmp 用于构建合并后的链表;
(3) 通过比较 a 和 b 的值,逐个选择较小的节点接入到新链表中,直至其中一个链表为空。
(4) 最后,返回合并后链表的头节点(即 head->next),并注意释放之前创建的虚拟头节点。

源代码

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {ListNode* mergeSort(ListNode* a, ListNode* b){a = sortList(a);b = sortList(b);ListNode* head = new ListNode(0);ListNode* tmp = head;head->next = nullptr;while (a || b){if (a == nullptr){tmp->next = b;break;}else if (b == nullptr){tmp->next = a;break;}else if (a->val < b->val){tmp->next = a;a = a->next;}else if (a->val >= b->val){tmp->next = b;b = b->next;}tmp = tmp->next;tmp->next = nullptr;}return head->next;}
public:ListNode* sortList(ListNode* head) {if (head == nullptr)                   //return nullptr;else if (head->next == nullptr)        // return head;ListNode *slow = head, *fast = head, *pre = nullptr;while (fast != nullptr){pre = slow;slow = slow->next;fast = fast->next;if (fast)fast = fast->next;}ListNode *tmp = pre->next;pre->next = nullptr;return mergeSort(head, tmp);}
};
http://www.yayakq.cn/news/876722/

相关文章:

  • 重庆网站优化公司遵义网站制作报价
  • python搭建个人网站网络工程项目案例
  • 做一个网站分析应该怎么做网站在线答题怎么做
  • 定制网站建设电话石家庄酒店网站建设
  • 怎么登陆自己的公司网站泗泾做网站
  • 男女做暖暖网站免费网址大全免费观看
  • 自动城市定位装修网站建设网站建设相关职业岗位
  • 外贸建站哪好室内设计网站图片
  • 沧州网站设计公司价格哈尔滨产品推广网站
  • 开源公司网站网站按钮psd
  • 廊坊集团网站建设如何免费做视频二维码永久
  • 专业行业网站开发报价餐饮公司网站模板
  • 福建建设监理网站网站备案与不备案的区别
  • 湟源县公司网站建设做视频网站多大服务器
  • 阿里巴巴网站建设教程视频抖音代运营销售话术
  • 什么是定制网站建设刷会员网站
  • 国外有没有网站是做潘多拉的google chrome官网入口
  • 网站建设简单案例it行业怎么入门
  • 自助建站网站模板网站建设优化石家庄
  • 南宁网站建设平台营销型网站策划建设分为哪几个层次
  • 单页式网站系统程序开发步骤不包括
  • 电商网站开发目的seo网站开发
  • 华为网站建设方案模板下载做最优秀的自己的视频网站
  • 嘉兴市城乡与建设局网站小众设计公司logo
  • 无锡手机网站建设服务为公益组织做网站
  • 规划怎样做网站石家庄招聘网最新招聘
  • 胶州建设工程信息网站wordpress添加表格
  • 临夏网站建设网站开发流程主要分成什么
  • 动漫网站设计模板seo推广手段
  • 西宁建一个网站公司制作网页的常用软件