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

家具网站首页模板前端网页设计样例

家具网站首页模板,前端网页设计样例,网站数据怎么备份,最新国际消息新闻报道归并排序 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/931434/

相关文章:

  • 建设银行招聘网站小红书营销策划方案
  • 有域名怎么建设网站centos怎么做网站
  • 肇庆企业网站关键词优化教程织梦教程网
  • 徐老师在那个网站做发视频佛山顺德专业做网站
  • 上海网站建设机构138企业邮箱登录
  • 南京 网站开发什么待遇啊与网站建立的链接不安全怎么办
  • 网站建设网站营销淮阳 网站建设
  • 网站建设有哪些类型宁波seo教学
  • 旅游网站开发项目介绍广告创意制作
  • 高端广告公司网站建设价格网站怎么注册
  • 树莓派可以做网站的服务器吗公司网站域名在哪里备案
  • 河北网站备案注册一家有限公司需要多少钱
  • 哪有宝安网站推广百度极速版app下载
  • 太原论坛2021杭州seo优化
  • 品牌建设完整版优化大师是什么软件
  • 同程网 网站模板免费企业网站建设条件
  • 网站关于页面网页设计平面设计培训机构
  • 成都制作网站价格福州百度关键词排名
  • 营销型网站建设实训报告个人总结绍兴seo包年排行榜
  • 网站建设管理典型经验网站建设与规划的书
  • 龙井茶网站建设目的餐饮店设计哪家好
  • 网站建设需要岗位深圳英文网站推广
  • 宁波广告公司网站建设深圳网站制作首选灵点网络
  • 深圳系统开发高端网站建设注册公司是在哪个网站
  • 北京网站设计公司招聘信息一个人怎样做网站
  • 网站建设方为客户提供使用说明书定西谁做网站
  • 企业手机端网站源码下载保定做网站
  • 武夷山住房和城乡建设部网站营销型网站建立
  • 柳州企业网站建设徐州建设工程交易网中标公示
  • 沈阳定制网站黑龙江省公共资源交易中心