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

手工活接单在家做有正规网站吗媒体营销

手工活接单在家做有正规网站吗,媒体营销,钦州网站建设哪家便宜,做视频网站系列专栏 双指针 模拟算法 分治思想 目录 1、题目链接 2、题目介绍 3、解法 解决方案选择 解题步骤 4、代码 1、题目链接 912. 排序数组 - 力扣(LeetCode) 2、题目介绍 给你一个整数数组 nums,请你将该数组升序排列。 你必须在 …

系列专栏

双指针

模拟算法

分治思想


 

目录

1、题目链接

2、题目介绍

3、解法

解决方案选择

解题步骤

4、代码


1、题目链接

912. 排序数组 - 力扣(LeetCode)

2、题目介绍

给你一个整数数组 nums,请你将该数组升序排列。

你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为 O(nlog(n)),并且空间复杂度尽可能小。

示例 1:

输入:nums = [5,2,3,1]
输出:[1,2,3,5]

示例 2:

输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]

提示:

  • 1 <= nums.length <= 5 * 104
  • -5 * 104 <= nums[i] <= 5 * 104

3、解法

解决方案选择

为了满足时间复杂度的要求,我们选择使用归并排序(Merge Sort)算法。归并排序是一种分而治之的算法,它将数组分成两半,递归地对它们进行排序,然后将结果合并成一个有序数组。这个过程的时间复杂度为 O(nlog(n)),因为它将问题分解成更小的子问题,直到子问题的大小为1(即已经排序),然后将它们合并起来。

解题步骤

  1. 定义辅助函数
    • merge 函数:负责将两个已排序的子数组合并成一个有序数组。它使用了一个临时数组 tmp 来存储合并过程中的元素,以避免在原始数组上进行复杂的元素移动。
    • mergeSort 函数:递归地将数组分成更小的部分,直到每个部分只包含一个元素(自然是有序的),然后调用 merge 函数将它们合并成有序数组。
  2. 归并排序过程
    • 拆分:通过递归调用 mergeSort,将数组不断拆分成更小的部分,直到每个部分只包含一个元素。
    • 合并:在递归返回的过程中,使用 merge 函数将相邻的两个已排序的子数组合并成一个有序数组。
  3. 空间复杂度
    • 归并排序的空间复杂度主要由临时数组 tmp 决定,其大小为 nums.size(),因此空间复杂度为 O(n)。
  4. 时间复杂度
    • 归并排序的时间复杂度为 O(nlog(n)),这主要是由于每次递归调用都将问题规模减半,并且合并操作的时间复杂度为 O(n)。

4、代码


class Solution {
public://归并排序//void merge(vector<int>& nums, vector<int>& tmp, int left, int mid, int right){int lsort = left, rsort = mid + 1;//两个需要进行合并区域的第一个元素下标int cur = left;//遍历tmp数组的计数器while (lsort <= mid && rsort <= right){if (nums[lsort] <= nums[rsort]){tmp[cur++] = nums[lsort++];}else {tmp[cur++] = nums[rsort++];}}//如果有剩余的数,没有参与比较,直接插入到tmp中while (lsort <= mid){tmp[cur++] = nums[lsort++];}while (rsort <= right)tmp[cur++] = nums[rsort++];while (left <= right){nums[left] = tmp[left];left++;}}//先拆分,再合并void mergeSort(vector<int>& nums, vector<int>& tmp, int left, int right){if (left < right){int mid = (right + left) / 2;mergeSort(nums, tmp, left, mid);mergeSort(nums, tmp, mid + 1, right);merge(nums, tmp, left, mid, right);}}vector<int> sortArray(vector<int>& nums) {vector<int> tmp(nums.size());mergeSort(nums, tmp, 0, nums.size() - 1);return nums;}
};

💗感谢阅读!💗

http://www.fp688.cn/news/155924.html

相关文章:

  • 大连建设招标网seo技术自学
  • 一个网站添加多个网址网络营销岗位有哪些
  • 高效网站建设公司网络小说网站三巨头
  • 石家庄微网站建设公司哪家好怎么创作自己的网站
  • 使用net域名的大网站互联网营销培训课程
  • 做保洁网站找谁做成都网站制作关键词推广排名
  • 设计网站公司力荐亿企邦哈尔滨关键词排名工具
  • jsp网站建设毕业设计蜘蛛搜索
  • 北京网站制作定制网络营销中的四种方法
  • 网站开发登录链接网站推广优化排名教程
  • 虚拟机建设网站百度开户需要什么条件
  • 可以做全景的网站百度推广seo优化
  • 便宜做网站价格青岛百度推广优化怎么做的
  • 网站开发公司盈利计算机编程培训学校哪家好
  • 资海网络一年做多少网站网站接广告平台
  • 免费学做美食视频网站杭州百度
  • c 网站开发项目提供seo顾问服务适合的对象是
  • 吴江高端网站建设可以全部免费观看的软件
  • 深圳做网站公司有哪些搜索引擎优化的方法和技巧
  • 做网站怎么接业务google免费入口
  • 减粘装置seo优化是利用规则提高排名
  • 凡科网登录电脑端aso优化技术
  • 辽宁建设工程质量监督站网站学计算机哪个培训机构好
  • 贵阳网络科技有限公司seo资源网站排名
  • 网站后台登录界面西安百度公司
  • 北京集团公司注册流程成都最好的seo外包
  • 公司做彩票网站违法吗google搜索引擎免费入口
  • 郑州鹏之信网络科技有限公司百度搜索优化关键词排名
  • wordpress文本块字体大小seo搜索引擎优化方式
  • 网页数据抓取郑州seo哪家专业