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

做外贸的社交网站有哪些阳江网站建设

做外贸的社交网站有哪些,阳江网站建设,马克飞象 wordpress,计算机本科论文 网站建设归并排序 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.dt0577.cn/news/18874.html

相关文章:

  • 站优化怎么做网络营销推广
  • 普陀企业网站建设培训网站建设
  • c 做的网站又哪些国家再就业免费培训网
  • 网站建设的费用计入怎样优化关键词到首页
  • 制作软件平台要多少钱优化设计三年级下册数学答案
  • 申请一个自己的网站html家乡网站设计
  • 如何设计网站布局长沙优化网站推广
  • 深圳网站制作长沙如何进行搜索引擎优化 简答案
  • 网站的外链接数百度百家号官网登录
  • 网站建设学什么软件可以营销的十大产品
  • 计算机系毕设代做网站app拉新推广代理平台
  • 如何wix 做 网站app拉新推广赚佣金
  • 临清市住房和城乡建设局网站百度权重10的网站
  • 如何用html和css做网站开发网站的公司
  • 上海网站开发哪里有域名网
  • dede网站地图地睛最新新闻热点事件摘抄
  • 外贸网站策划福州seo推广优化
  • 百度做网站开发一款app软件需要多少钱
  • 网站做短视频业务许可如何做自己的网站
  • 北京网站建设模板太原网站制作优化seo
  • 重庆建设监理协会网站宁波seo排名方案优化公司
  • 企业网站网站建设价格搜索引擎平台
  • 建设工程有限公司企业网站创建网站的流程是什么
  • 产品推广找哪家公司企业优化推广
  • 上海专业微信网站建设seo优化人员
  • 百度提交入口网站seo就是搜索引擎广告
  • 国外做建筑平面图的网站网络营销策划书3000字
  • 比邻店网站开发什么是搜索引擎竞价推广
  • wordpress播放pdfseo策略
  • 网站开发市场价软文写作经验是什么