淘宝网店运营策划方案seo排名优化首页

web/2025/10/4 17:39:31/文章来源:
淘宝网店运营策划方案,seo排名优化首页,创建手机网站模版,网页设计新手制作的网站代码快速排序算法 (1) 快速排序法 (2) 快排前后指针 (3) 快排挖坑法 颜色分类 题目解析 算法原理 算法原理和移动零非常相似 简述移动零的算法原理 cur 在从前往后扫描的过程中#xff0c;如果扫描的数符合 f 性质#xff0c;就把这个数放到 dest 之…         快速排序算法  (1) 快速排序法       (2) 快排前后指针      (3) 快排挖坑法     颜色分类 题目解析    算法原理      算法原理和移动零非常相似 简述移动零的算法原理     cur 在从前往后扫描的过程中如果扫描的数符合 f 性质就把这个数放到 dest 之前的区域符合 g 性质则不管知道 cur 遍历到最后dest 指针就可以把数组划分成两个部分  解法三指针      当 i 遍历结束数组后整个数组就被排好序了并且数组以 leftright 两个指针为分界线分成三个部分 在遍历的过程中整个数组会被划分成四个部分 对遍历到的 nums[ i ] 的不同元素的分类处理     nums[ i ] 0      对于上面这种情况我们只需要 swap( nums[ left 1] , nums [ i ] ) lefti 即可要注意nums[left1]1 但是有一种极端情况就是如果 i left 1并且也符合 nums[ i ] 0 的情况我们依旧要执行 swap( nums[ left 1] , nums [ i ] ) 虽然这种极端情况是变成自己和自己交换但是处理方法不变交换完成后left , i   nums[ i ] 1      此时我们令 i 即可 nums[ i ] 2      对于这种情况我们可以 swap( nums[ i ] , nums[ right - 1 ] ) 然后 right-- ; 此时需要特别注意swap( nums[ i ] , nums[ right - 1 ] ) 后i 是不可以 的因为 [ i ,right-1 ] 是待扫描区域交换后nums[ i ] 依旧是待扫描元素所以 i 如果是和 right -1交换的情况i 是一定不可以的 处理细节问题     循环终止条件      当待扫描区域已经没有元素说明此时数组所有元素已经全部被扫描并且分好类了结束循环即可所以循环终止条件是 i ! right 指针初始化      根据我们上面的算法原理为了保证 left 指向 0 区域的最右边 right 区域指向 2 区域的最左边我们交换元素是不会让 nums[ left ] nums[ right ] 亲自和 nums[ i ] 进行交换的  所以我们的指针初始化的值如下 这样的操作是为了避免漏掉对 nums[ 0 ] nums [ n - 1 ] 的扫描 编写代码     报错原因      交换元素的方法不对并且初始化 left和 right 的操作没有处理好会漏掉对 nums[ 0 ] nums [ n - 1 ] 的扫描 使用快速排序来排序数组 题目解析    算法原理      解法原始快速排序    原始快速排序     而原始快速排序的方法最核心的步骤就在于根据基准元素进行数据划分的过程这个步骤的名字是 partation  但是如果使用快速排序的数组有重复元素那么快排的时间复杂度就会退化  解法用 数组分三块 的思想实现快速排序     这是基于原始快速排序的优化策略用于应对快速排序的数组有大量重复元素的情况从对数组分成两块划分为分成三块  在数组出现大量重复元素时通过把数组分成三段可以把时间复杂度从 O(N^2) 降到 O(N) 分类讨论      我们通过递归不断对划分的小区域排序最终得到排好序的数组 优化用随机的方式选择基准元素     如果要想让快排的时间复杂度趋于 O(N* logN) 就需要随机地选择基准元素 随机选择基准元素就是给我们一个数组我们要等概率地返回区间上的任意一个数 如何随机地选择一个基准元素呢  编写代码     准备工作     传入要排序的左区间和右区间 如果 L  R则说明排序的区间要么只有一个要么这个区间没有元素说明整个数组已经排序完毕   随机生成基准元素 初始化下标     要记一下如何生成随机数下标以及要特别注意这里的初始化 left ! -1 right ! nums.length 把数组分三块      [ left 1 , right - 1 ] 这块区域用于存与生成的随机基准元素值相同的元素 并且以这块区域为基准把其他数组元素分到这三块区域对应的区域 可以记一下这个 partation 的过程这是快排的核心逻辑 [ L , left ] [ right , R ] 进行排序     根据 nums[ i ] 与 key 的大小关系把所有元素放到 [ left 1 , right - 1 ] 的两边两边还是乱序的再对两边区域进行递归排序即可  快速选择算法  数组中的第K个最大元素 题目解析    算法原理      解法基于快排实现快速选择算法    快速排序 Partation    本题是要找出数组中第 K 大的元素 KthLarges那么我们可以根据基准元素来判断 KthLarges 是落在上面三个区域的哪一个区域然后对这个区域进行继续进行 Partation继续找 KthLarges; 根据 K 的值分情况讨论确定 KthLarges 的区间位置     我们先分别设三个区间的元素个数  处理细节问题     我们解释一下这种情况  编写代码     先根据快排 partation 原理把数组分三块     根据 k 的值来决定递归三块中的哪一块区域      最小的k个数 题目解析    算法原理      解法一直接排序    时间复杂度 O( N * logN)   解法二使用大根堆( 求最小的前K个数)    时间复杂度 O( N * logK )  解法三快速选择算法    时间复杂度趋于 O( N ) 因为是随机选择基准元素步骤如下 对 K 的值分类讨论      (1) a k     (2) b  k     这种情况我们直接返回前面两个区域的前 k 个小的元素即可不用关心 [ L , right ] 区间的顺序 (3) k bc     通过这三种情况我们就能明显的感受到快速选择排序是最优的解法; 比如第三种情况此时[ L right ] 区间是没有排序的但是我们依旧已经找到了最小的 k 个元素的一部分而其他两种情况都是要对数组的每一个元素进行排序 编写代码     我们是对 nums 的前 k个元素进行排序把然后把 nums 的前 k 个元素赋值个 ret然后返回 ​​​​报错原因粗心导致 left right 指针的初始值写错了 归并排序  当数组块被分成每一块都只有一个元素分块结束用双指针合并两个有序数组归并排序的决策树非常像二叉树的后续遍历( 左右根 )而快排则类似前序遍历(先对数组整体粗糙分一遍再去两边区域细分) 使用归并排序来排序数组 题目解析    编写代码     优化辅助数组设置为全局变量      把 tmp 设置为全局就不用在每次递归时创建一个新的 tmp 减少时间开销  int[] nums, tmp ;public int[] sortArray(int[] _nums) {nums _nums;tmp new int[nums.length]; mergeSort(0, nums.length - 1);return nums;}public void mergeSort(int left ,int right){if(left right) return;int mid (left right) / 2;mergeSort(left , mid);mergeSort(mid 1 , right);int cur1 left; int cur2 mid 1; int i 0 ; while(cur1 mid cur2 right){tmp[i] nums[cur1] nums[cur2] ? nums[cur1] : nums[cur2] ; }while(cur1 mid) tmp[i] nums[cur1];while(cur2 right) tmp[i] nums[cur2];for(int j left ; j right ; j ) nums[j] tmp[j - left]; } 数组中的逆序对 题目解析    算法原理      解法一暴力枚举    固定其中一个数在这个数后面区间找比这个数小的数来构成一个逆序对 使用两层 for 循环即可但是会超时 解法二归并排序    算法原理     (1) 左半部分 右半部分   一左一右      本质还是暴力枚举逆序对个数 a b c  (2) 左半部分 左排序  右半部分 右排序  一左一右 排序      对左右两边排好序再一左一右挑数组成逆序对并不影响结果 本题为什么可以利用归并排序解决问题      并且通过这步操作我们得出本题最终的解法就是需要通过归并排序求逆序对个数   我们在找出左右两边的逆序对个数时先对两边排序再一左一右会非常快 一左一右查找逆序对策略优化      我们在之前找左右两边区域的所有逆序对时就刻意地对左右两边进行排序找完左右两边的逆序对时nums 的两边区域的顺序已经被排序成升序此时我们需要一左一右寻找逆序对 策略一 : 判断 nums[cur1]nums[cur2]  升序       统计一左一右逆序对的固定策略     固定 cur2,  只要 cur1 一移动到 nums[cur1]nums[cur2]位置就统计符合要求的区间的元素个数cur2 假设我们固定 cur2要在左边找有多少个比 nums[ cur2 ] 大的元素 令 cur1 在左边区域中从左到右扫描找出第一个 nums[ cur1 ] nums[ cur2 ] 的 cur1   (1) nums[ cur1 ] nums[ cur2 ]      我们直接让 cur1 并且为了让数组有序我们要把 nums[cur1] 放入辅助数组中方便后续排序继续往后找即可 (2) nums[ cur1 ]  nums[ cur2 ]       出现这种情况对于两边升序区域当 nums[ cur1 ] nums[ cur2 ] 说明此时 cur1 指向的元素是左边区域第一个比 nums[ cur2 ] 大的元素cur1 后面所有元素都比 nums[ cur2 ] 大 也因为是升序排序在 cur1 一走到第一个合法位置时 ret mid - cur1 1即可 本轮 cur2 的所有能拿到的逆序对就已经统计好了此时 cur2 即可 如果策略一使用降序排列会出现的问题     对于降序排序我们依旧是需要固定 cur2 我们依旧需要采取【 只要 cur1 一移动到 nums[cur1]nums[cur2] 的位置就统计符合这个要求的区间的元素个数】的策略 如下图的情况 因为是降序排序的所以 cur2 不能因为 nums[cur1]nums[cur2]  就马上 还必须看下一个 cur1 能否满足  nums[cur1]nums[cur2] : 因为采取了【 只要 cur1 一移动到 nums[cur1]nums[cur2] 的位置就统计符合这个要求的区间的元素个数】的策略因此就会造成大量的重复计算 cur1 一移动判断是否大于 cur2如果判断成立马上就让 ret cur1 - left 1所以会出现多次重复计算 所以使用策略一在排序数组时不能用降序避免大量重复计数所以只能用升序 策略二 : nums[cur1]nums[cur2]  降序       统计一左一右逆序对的固定策略      固定 cur2,  只要 cur1 一移动到 nums[cur1]nums[cur2]位置就统计符合要求的区间的元素个数cur2 编写代码     策略一 升序      准备工作     主逻辑     策略二  降序       计算右侧小于当前元素的个数 题目解析    算法原理      这道题的本质还是类似于求逆序对的个数  解法归并排序左半部分 左排序  右半部分 右排序  一左一右 排序    一左一右策略nums[ cur1 ] nums[ cur2 ] 降序上一题策略二     nums[ cur1] nums[ cur2 ] cur2修改对应的辅助数组nums[ cur1 ] nums[ cur2 ]把 nums[ cur1 ] 对应 ret[ ] 下标的元素加上 right - cur2 1 修改对应的辅助数组 处理细节问题     我们要找到 nums[ cur1 ] 对应 ret[ ] 的对应下标 因为我们排序的时候下标已经乱了 如果我们使用哈希表来设置  nums 元素 ,  ret 下标 的映射如果 nums有重复元素哈希表无法存储重复元素就无法解决下标混乱的问题 所以我们设置与 nums 同等规模的数组 index[ ]表示 nums 未排序时元素的原始下标 不管 nums 因为排序里面的元素怎么移动index 对应的元素绑定移动 那如何让 nums[] 和 index[] 绑定移动呢我们需要创建两个辅助数组 tmp来让它们同步移动 最后让 ret [ index[ i ] ]   right - cur2 1 即可 编写代码     准备工作     核心逻辑     报错原因对于降序排序的一左一右操作不熟练判断条件写错了 翻转对 拓展  直接插入排序     选择排序      冒泡排序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

乐陵森林大队长李兵seo技术培训宁波

勤劳的一更题目题解代码实现题目 C国有 n个大城市和 m 条道路,每条道路连接这n个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数…

漳州正规网站建设哪家便宜建立自己的网站用花钱吗

Java面向对象的三大特征 java面向对象的三大特征:“封装、继承、多态”。更多Java技术知识,请登陆疯狂软件教育官网。微信搜索微信号:疯狂软件,参加2015年优惠活动,有机会获得优惠劵和代金劵。 以本文为例&#xff0c…

网站维护具体做啥沛县专业做网站

此群已满340500857 ,请加新群458041663由于微信群人数太多入群请添加小编微信号yanjinhuawechat 或 W_Feng_aiQ 邀请入群需备注WPF开发者 PS:有更好的方式欢迎推荐。支持NugetInstall-Package WPFDevelopers.Minimal -Version 3.2.001—代码如下一、创建…

南昌营销网站开发河南公司网站建设

来源:华尔街见闻摘要:AI芯片似乎没能表现得比人类更智能,但它们的学习能力很强,未来可以变得更聪明。算法和芯片系统的设计都可以进步,这需要AI芯片具备更高级的记忆系统和连接机制,以及承载深度学习数据流…

4成都网站建设施工企业会计制度及施工企业会计核算办法

**方式一 **方式二转载于:https://www.cnblogs.com/wgx0428/archive/2012/05/10/2493953.html

qq邮箱咋与网站绑定提醒企业推广宣传方式

Web API(六)之正则表达式 正则表达式正则基本使用元字符边界符量词范围字符类替换和修饰符change 事件判断是否有类正则表达式 正则表达式(Regular Expression)是一种字符串匹配的模式(规则) 使用场景: 例如验证表单:手机号表单要求用户只能输入11位的数字 (匹配)过滤…

手机网站搭建用什么软件?wordpress网站加载慢

1. 题目 所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。 在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。 编写一个函数来查找 DNA 分子中所有出现超过一次的 10 个字母长…

外国网站设计风格wordpress后台权限

当 JuiceFS 文件系统部署完成并投入生产环境,接下来就需要着手解决一个非常重要的问题 —— 如何实时监控它的运行状态?毕竟,它可能正在为关键的业务应用或容器工作负载提供持久化存储支持,任何小小的故障或性能下降都可能造成不利…

做兼职的网站广州网站开发定制方案

import os import shutildef collect_images(source_folder, target_folder):# 遍历主文件夹及其所有子文件夹for root, dirs, files in

网站建设投标文件范本wap网站建设方案 pdf

1.引入 前面一篇文章我们介绍了numpy,但numpy的特长并不是在于数据处理,而是在它能非常方便地实现科学计算,所以我们日常对数据进行处理时用的numpy情况并不是很多,我们需要处理的数据一般都是带有列标签和index索引的&#xff0…

网站从建设到上线流程图3合1网站建设公司

1.事务1.事务特性--ACIDAtomicity(原子性):要么全做,要么不做,不能只做一半(银行转账)Consistency(约束性):事务的前后,约束都能满足Isolation(依赖性):事务之间是独立的,互不影响的Durability(持久性):事务执行之后,事物的结果可以持久保存2.事务隔离级别:read uncommitted:可…

南京市建设行政网站手机网页开发

1,选择使用 wxWidgets 框架 选择这个主要是因为完全的开源,不想折腾 Qt的库,而且打包的文件比较大。 网络上面有很多的对比,而且使用QT的人比较多。 但是我觉得wxwidgets 更加偏向 c 语法本身,也有助学习C。 没有太多…

带地板翻转的网站怎么做俄罗斯最新军事动态

朋友找我在一台机器上帮忙安装下discuz。想着搭建过好几次的lnmp了,但是还没有使用过“一键安装”的自动化脚本,去网上有搜索出来,但是运行的时候发现用root运行别人的脚本还是真危险的事情,于是明白这不是个轮子,而是…

做衣服的教程网站手机自助建网站

1、概述使用archiveRootObject:toFile:方法可以将一个对象直接写入到一个文件中,但有时候可能想将多个对象写入到同一个文件中,那么就要使用NSData来进行归档对象。NSData可以为一些数据提供临时存储空间,以便随后写入文件,或者存…

网站建设二公司毕业设计网站可以做什么

0 工具准备 1.SOEM-1.4.0源码(官网:http://openethercatsociety.github.io/) 2.EtherCAT从站(本文使用DE3E-556步进电机驱动器) 3.Linux开发板(本文为正点原子I.MX6U ALPHA开发板) 4.交叉编译工具(arm-linux-gnueabihf-gcc) 5.cmake(版本不得低于3.9,本文为3.9.2&a…

电子商务网站建设的阶段化分析在越南注册公司需要什么条件

文章目录 QuestionIdeasCode Question 给定你一个长度为 n 的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n 。 第二行包含 n 个整数(所有整数均在 1∼109 范围…

陕西交通建设集团网站灌南网页设计

2024 汽车测试及质量监控博览会(中国)(Testing Expo China – Automotive)于 8 月 28 日至 30 日在上海世博展览馆顺利举行。作为汽车测试技术领域的顶级盛会,来自全球的行业领袖和技术专家齐聚一堂,共同探…

网站建设业务员泉州seo招聘

Redis原理 Redis数据结构 Redis网络模型 RESP协议 Redis内存回收 Redis原理篇 一、原理篇-Redis数据结构 1.1 Redis数据结构-动态字符串 我们都知道Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不…

辽宁数据网站建设哪家便宜芜湖做网站多少钱

title: java入门 date: 2019-07-21 19:50:19 tags: java学习 top: 1 JAVASE学习 1.java入门 More info: Writing //超链接 2.java开发环境配置 第一步是配置本地开发环境,学习最基本的桌面开发,下面以win10为例配置Java开发环境,即&#…

网站做301怎么做杭州游戏软件开发公司

数据结构(三)队列队列队列(顺序存储)循环队列(顺序存储)队列(链式存储)队列 队列是一种受限制的线性表,只允许表的一端插入,在表的另一端删除 队列&#xf…