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

网站建设论文答辩ppt网站开发托管协议

网站建设论文答辩ppt,网站开发托管协议,移动互联网 商业模式,镇江企力信息有限公司一、引言在力扣刷题的旅程中,排序类题目是绕不开的重要板块。今天就来分享两道经典排序题——912. 排序数组和75. 颜色分类的解题思路与代码实现,带你深入理解排序算法在实际题目中的应用 。二、题目剖析与解题思路(一)912. 排序数…


一、引言

在力扣刷题的旅程中,排序类题目是绕不开的重要板块。今天就来分享两道经典排序题——912. 排序数组和75. 颜色分类的解题思路与代码实现,带你深入理解排序算法在实际题目中的应用 。

二、题目剖析与解题思路

(一)912. 排序数组

题目要求

给定整数数组  nums ,需在不使用内置排序函数、时间复杂度为  O(nlog(n))  且空间复杂度尽可能小的条件下,将数组升序排列。

解题思路——快速排序

快速排序是分治思想的典型应用,平均时间复杂度为  O(nlog(n))  ,空间复杂度主要是递归栈空间,合理实现可做到较小空间占用。

1. 划分分区:从数组中选取一个基准值( key ),通过一趟遍历,将数组分成两部分,小于基准值的元素放到左边,大于基准值的放到右边。这里为了避免最坏情况(如数组有序时基准值选两端导致时间复杂度退化到  O(n²)  ),采用随机选取基准值的方式( get  函数实现)。
2. 递归排序:对划分后的左右两个子数组,递归地进行快速排序操作,直到子数组长度为 1(递归终止条件),此时数组自然有序。


(二)75. 颜色分类

题目要求

给定包含  0 (红)、 1 (白)、 2 (蓝)的数组  nums ,需原地排序,使相同颜色相邻,且按红、白、蓝顺序排列,同时不能使用内置  sort  函数。

解题思路——三指针法

利用三个指针来划分不同颜色区域,实现一次遍历完成排序,时间复杂度  O(n)  ,空间复杂度  O(1) (原地排序)。

-  L  指针标记  0  区域的右边界, R  指针标记  2  区域的左边界, i  指针用于遍历数组。
- 遍历过程中:遇到  0  ,和  L  指针右侧元素交换,同时  L  右移、 i  右移(因为交换来的元素已遍历过,可直接处理下一个);遇到  1  ,直接  i  右移;遇到  2  ,和  R  指针左侧元素交换, R  左移,但  i  不右移(交换来的元素未遍历过,需重新判断) 。


三、代码实现(C++)

(一)912. 排序数组(快速排序实现)

#include <vector>
#include <cstdlib>
#include <ctime>
using namespace std;class Solution {
public:vector<int> sortArray(vector<int>& nums) {srand(time(NULL));  // 初始化随机数种子,用于随机选基准值qsort(nums, 0, nums.size() - 1);return nums;}void qsort(vector<int>& nums, int l, int r) {if (l >= r) return;  // 递归终止条件,子数组长度为1int i = l, left = l - 1, right = r + 1;int key = get(nums, l, r);  // 获取随机基准值while (i < right) {if (nums[i] < key) swap(nums[++left], nums[i++]);else if (nums[i] == key) i++;else swap(nums[--right], nums[i]);}qsort(nums, l, left);  // 递归排序左子数组qsort(nums, right, r);  // 递归排序右子数组}int get(vector<int>& nums, int l, int r) {int t = rand();return nums[t % (r - l + 1) + l];  // 随机选取基准值}
};



(二)75. 颜色分类(三指针法实现)

#include <vector>
using namespace std;class Solution {
public:void sortColors(vector<int>& nums) {int L = -1, R = nums.size();  // L 初始为 -1,R 初始为数组长度for (int i = 0; i < R;) {  // i 遍历数组,R 左侧是未处理区域if (nums[i] == 0) swap(nums[++L], nums[i++]);else if (nums[i] == 1) i++;else if (nums[i] == 2) while (nums[i] == 2 && i < R) swap(nums[i], nums[--R]);}}
};




四、总结

- 912. 排序数组借助快速排序,通过随机选基准值优化,在平均情况下满足  O(nlog(n))  时间复杂度要求,实现高效排序;
- 75. 颜色分类利用三指针法,巧妙划分不同颜色区域,一次遍历完成排序,时间复杂度  O(n)  ,空间复杂度  O(1)  ,非常适合这类特定元素(只有 0、1、2 )的排序场景。

刷题过程中,理解算法思想并灵活运用到不同题目场景至关重要,大家可以多尝试不同解法,加深对排序算法的掌握,助力力扣刷题之路~  后续也会继续分享更多有趣的力扣题目解法,欢迎持续关注呀!


文章转载自:

http://3vXMXwXm.fwmhz.cn
http://Ux97proj.fwmhz.cn
http://SlSXd7KB.fwmhz.cn
http://mE5hmjqM.fwmhz.cn
http://DyNtU9gX.fwmhz.cn
http://vF1OlKvt.fwmhz.cn
http://SLf0UYLm.fwmhz.cn
http://4JsFBEn3.fwmhz.cn
http://I2uFkC4W.fwmhz.cn
http://KQtZ8uiO.fwmhz.cn
http://t7eN20Z2.fwmhz.cn
http://1gDbIa7Y.fwmhz.cn
http://V9TSnaYU.fwmhz.cn
http://928D3ciT.fwmhz.cn
http://jMaYRUSb.fwmhz.cn
http://pj9XFsE2.fwmhz.cn
http://P9EXVcqp.fwmhz.cn
http://RVrsbPE0.fwmhz.cn
http://rLBQPbMN.fwmhz.cn
http://6nPLVS79.fwmhz.cn
http://n0bqQxZ0.fwmhz.cn
http://hwUYgsuZ.fwmhz.cn
http://q946cU3J.fwmhz.cn
http://JCPtEPS4.fwmhz.cn
http://vVacmHuN.fwmhz.cn
http://d71KJ8Za.fwmhz.cn
http://uSGIZFvC.fwmhz.cn
http://GFvegekw.fwmhz.cn
http://eVWXwx8X.fwmhz.cn
http://umTv3NSQ.fwmhz.cn
http://www.dtcms.com/wzjs/635659.html

相关文章:

  • 关于网站建设公司大全网站流量共享
  • 百度网站提交入口网址谢岗网站仿做
  • 推荐定制型网站建设百度排名点击软件
  • 合肥做网站全网营销全网推广
  • 建设银行网站注册企业北京土巴兔装修公司电话
  • 网站的维护和推广sem与seo
  • 献县做网站的wordpress适合做网页
  • 上海专业网站制作设计标题设计网站
  • 网站建设培训课程网站建设中的问题
  • php如何搭建网站后台wordpress旧版页面编辑界面
  • 昆明网站制作公司太古楼角原网站建设
  • 名聚优品 一家只做正品的网站北京到安阳的大巴
  • 免费学编程国内网站wordpress占用空间越来越大
  • 大淘客做的网站可以吗网站后台模板html
  • 网站更改关键词html网站注册页面
  • 昆明网站定制开发湖南长沙解封通知最新
  • 浙江网站开发网站建设配色方案
  • 如何建设一个不备案的网站官方网站建设哪儿有
  • 网站开发培训价格如何注册公司微信公众号
  • 网站建设 任务分配表logo设计公司排名
  • 云浮各类免费建站苏州地区网站制作
  • 做公众号的网站有哪些品牌运营公司
  • 域名不变 新网站全国高风险和中风险地区名单
  • 安徽网站建设系统wordpress版块
  • 怎么兼职做网站网站页面怎么做地图
  • 昆明pc网站建设国外的做外包项目的网站
  • 微信制作宣传网站有哪些内容在旅行社做网站运营
  • 请问做网站需要什么软件邹城建网站
  • 班级优化大师官方网站公司建个网站要多少钱
  • 做游戏网站教程企业营业执照