服装网站开发项目计划书电子工程王粟

news/2025/9/29 17:51:04/文章来源:
服装网站开发项目计划书,电子工程王粟,免费速建网站,深圳网站建设大概多少钱简介#xff1a; 快速排序也采用的是分而制之的思想。那么快速排序和归并排序的区别在什么地方呢#xff1f; 归并排序是将所有的元素拆分成一个个排好序的数组#xff0c;然后将这些数组再进行合并。 而快速排序虽然也是拆分#xff0c;但是拆分之后的操作是从数组中选出一…简介 快速排序也采用的是分而制之的思想。那么快速排序和归并排序的区别在什么地方呢 归并排序是将所有的元素拆分成一个个排好序的数组然后将这些数组再进行合并。 而快速排序虽然也是拆分但是拆分之后的操作是从数组中选出一个中间节点然后将数组分成两部分。 左边的部分小于中间节点右边的部分大于中间节点。 然后再分别处理左边的数组合右边的数组。 简介 快速排序也采用的是分而制之的思想。那么快速排序和归并排序的区别在什么地方呢 归并排序是将所有的元素拆分成一个个排好序的数组然后将这些数组再进行合并。 而快速排序虽然也是拆分但是拆分之后的操作是从数组中选出一个中间节点然后将数组分成两部分。 左边的部分小于中间节点右边的部分大于中间节点。 然后再分别处理左边的数组合右边的数组。 快速排序的例子 假如我们有一个数组29,10,14,37,20,25,44,15怎么对它进行快速排序呢 先看一个动画 我们再分析一下快速排序的步骤。 我们选择的是最左边的元素29作为中间点元素然后将数组分成三部分[0, 14, 15, 20, 25],[29],[44, 37]。 中间节点29已经排好序了不需要处理。 接下来我们再对左右分别进行快速排序。最后就得到了一个所有元素都排序的数组。 快速排序的java代码实现 我们先来看最核心的部分partition如何将数组以中间节点为界分成左右两部分呢 我们的最终结果是要将array分割成为三部分。 首先我们选择最左侧的元素作为中间节点的值。然后遍历数组中的其他元素。 假如mmiddleIndexk要遍历的元素index 考虑两种情况第一种情况是数组中的元素比中间节点的值要大。 这种情况下m不需要移动k1继续遍历即可。 第二种情况下数组中的元素比中间节点的值要小。 因为m左边的元素都要比中间节点的值要小所以这种情况下m需要1即右移一位。 现在m1位置的元素要么还没有进行比较要么就是比中间节点的值要大我们可以巧妙的将m1位置的元素和k位置的元素互换位置这样仍然能够保证m左侧的元素要比中间节点的值要小。 将上面的分析总结成java代码如下 private int partition(int[] array, int i, int j) {//选择最左侧的元素作为中心点,middleValue就是中心点的值int middleValue array[i];int middleIndex i;//从i1遍历整个数组for (int k i1; k j; k) {//如果数组元素小于middleValue表示middleIndex需要右移一位//右移之后我们需要将小于middleValue的array[k]移动到middleIndex的左边// 最简单的办法就是交换k和middleIndex的值if (array[k] middleValue) {middleIndex;//交换数组的两个元素swap(array, k , middleIndex);} //如果数组元素大于等于middleValue,则继续向后遍历,middleIndex值不变}// 最后将中心点放入middleIndex位置swap(array, i, middleIndex);return middleIndex;} 最后我们需要将最左侧的元素和中间节点应该在的index的元素互换下位置这样就将中间节点移动到了中间位置并返回中间位置。 再来看下divide的代码 public void doQuickSort(int[] array, int low, int high) {//递归的结束条件if (low high) {//找出中心节点的值int middleIndex partition(array, low, high);//数组分成了三部分// a[low..high] ~ a[low..m–1], pivot, a[m1..high]//递归遍历左侧部分doQuickSort(array, low, middleIndex-1);// a[m] 是中心节点已经排好序了不需要继续遍历//递归遍历右侧部分doQuickSort(array, middleIndex1, high);log.info(QuickSort之后的数组:{},array);}} divide的代码就很简单了找到中间节点的位置之后我们再分别遍历数组的左右两边即可。最后得到排好序的数组。 随机快速排序的java实现 上面的例子中我们的中间节点的选择是数组的最左元素为了保证排序的效率我们可以从数组中随机选择一个元素来作为中间节点。 private int partition(int[] array, int i, int j) {//随机选择一个元素作为中心点,middleValue就是中心点的值int randomIndexinew Random().nextInt(j-i);log.info(randomIndex:{},randomIndex);//首先将randomIndex的值和i互换位置,就可以复用QuickSort的逻辑swap(array, i , randomIndex);int middleValue array[i];int middleIndex i;//从i遍历整个数组for (int k i1; k j; k) {//如果数组元素小于middleValue表示middleIndex需要右移一位//右移之后我们需要将小于middleValue的array[k]移动到middleIndex的左边// 最简单的办法就是交换k和middleIndex的值if (array[k] middleValue) {middleIndex;//交换数组的两个元素swap(array, k , middleIndex);} //如果数组元素大于等于middleValue,则继续向后遍历,middleIndex值不变}// 最后将中心点放入middleIndex位置swap(array, i, middleIndex);return middleIndex;} 上面的代码我们在分区的时候先选择出一个随机的节点然后将这个随机的节点和最左侧的元素交换位置后面的代码就可以重用上面的QuickSort的代码逻辑了。 快速排序的时间复杂度 从上面的分析我们可以看出每次分区的时间复杂度应该是O(N)而divide又近似二分法所以总的时间复杂度是O(N logN)。 原文链接 本文为阿里云原创内容未经允许不得转载。

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

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

相关文章

做网站一般会出现的问题wordpress 个人公众号

首先,为什么各种浏览器会产生兼容性问题? 产生这个问题的主要原因是市面上的浏览器的种类很多,但由于不同的浏览器的内核不一致,从而导致各个浏览器对网页的解析就产生了差异。 对于解决浏览器兼容性问题,我们要从三…

JVM调优实战及常量池详解

JVM调优实战及常量池详解 一、阿里巴巴 Arthas 工具 Arthas 是 Alibaba 开源的 Java 诊断工具(支持 JDK6+),采用命令行交互,可快速定位线上问题,核心内容如下: 1. 下载与启动 # GitHub下载 wget https://alibaba…

做asp网站需要的实验报告单上海网站建设置作

我来教你 js文件怎么通过python访问数据库,希望能够为你带来帮助。 1、如果是要提交表单内容给 服务器的 python 处理,那么只需要在表单 里面的 action 填写服务端的处理路由就可以了。或者用 指向服务器路由get querystring。前端方面不需要python啊。…

个人备案网站建设方案书网络营销推广怎么做

string模拟实现 构造函数和析构函数begin和endreserve和resizepush_back和appendc_strempty,size,capacity,clear拷贝构造和赋值和比较大小[]重载insert和erasefind查找 前面我们已经对string进行了简单的介绍,只要会用各个函数即…

Cisco Identity Services Engine (ISE) 3.5 - 基于身份的网络访问控制和策略实施系统

Cisco Identity Services Engine (ISE) 3.5 - 基于身份的网络访问控制和策略实施系统Cisco Identity Services Engine (ISE) 3.5 - 基于身份的网络访问控制和策略实施系统 思科身份服务引擎 (ISE) - 下一代 NAC 解决方…

[源码阅读][vmselect] 从promql 到一条曲线,计算过程是怎么样的?

[源码阅读][vmselect] 从promql 到一条曲线,计算过程是怎么样的?作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客 zhihu Github 公众号:一本正经的瞎扯以最经典的计算 qps 的曲线为例,vmse…

kuboard使用的etcd空间满了如何处理

1.在master节点通过命令进入etcd容器,pod名称替换成自己的[root@master ~]# kubectl get pods -n kuboard NAME READY STATUS RESTARTS AGE kuboard-etcd-6vmkm 1/1 R…

国内信创领域的PostgreSQL技术能力认证

工信部人才交流中心颁发的 PostgreSQL 数据库管理员认证(以下简称 “工信人才 PG 认证”)是国内信创领域的技术能力认证,随着信创战略推进,PostgreSQL 作为开源可控的数据库代表,已成为国产替代的标杆技术。在中央企…

redis-AOF持久化机制

redis-AOF持久化机制AOF,Appedn Only File,指Redis将每一次的写操作都以日志的形式记录到一个AOF文件中的持久化技术。 当需要恢复内存数据时,只这些写操作重新执行一次就可以将之前的内存数据恢复。 AOF配置开启AO…

03-控制台项目创建与结构说明

项目创建 项目名称和存放位置 Main函数

从拆盒到共创:手办盲盒抽赏小程序的多元体验与文化联结 - 实践

从拆盒到共创:手办盲盒抽赏小程序的多元体验与文化联结 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Co…

Nginx技术文档与LNMP架构部署指南 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

海康威视WEB视频监控插件3.3 解决视频画面遮挡 无法隐藏的问题 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

怎么做类似淘宝一样的网站吗wordpress维护服务

vue-cli项目首页加载缓慢想要使用骨架屏效果,经过几天的踩坑,这里学习并记录一下vue项目自动生成骨架屏方法。 添加骨架屏,其优势在于: 写于HTML文件中,独立于Vue框架,节省了JS加载时间JS全局环境创建的执…

YACS2025年9月乙组

YACS2025年9月乙组T1. 数学作业 发现 \(a-b\) 太大会很快超过题目所限的范围,所以 \(a-b\) 值并不大。 然后枚举差值 \(d\),发现 \(\frac{(x+d)!}{x!}\) 关于 \(x\) 单调递增。所以可以二分判断存不存在 \(x\) 满足 …

做网站需要源码网站主机购买

这篇文章主要介绍了oracle导入导出数据的二种方法,利用PL/SQL Developer工具导出和利用cmd的操作命令导出的出方法,大家参考使用吧方法一:利用PL/SQL Developer工具导出:菜单栏---->Tools---->Export Tables,如下…

赋能智慧应急:国标GB28181平台EasyGBS视频技术如何成为气象灾害预警新工具

赋能智慧应急:国标GB28181平台EasyGBS视频技术如何成为气象灾害预警新工具中国地理广阔,人口众多,自然环境复杂,气象灾害频发,是全球气象灾害最严重的国家之一。气象灾害约占自然灾害的70%,种类繁多、分布广泛,…

做视频免费模板下载网站seo网站导航建设技巧

##数据库事务 ###含义 通过一组逻辑操作单元(一组DML——sql语句),将数据从一种状态切换到另外一种状态 ###特点 (ACID) 原子性:要么都执行,要么都回滚 一致性:保证…

NET各个版本新增的特性和语法糖

以下是按C#版本从低到高整理的.NET相关版本特性,补充了发布年份及对应的.NET Core/.NET版本信息,包含特性概念、作用、优势及示例: C# 6.0对应版本:.NET Framework 4.6(2015年)、.NET Core 1.0(2016年) 核心特…

xinference推理embedding等小模型

使用容器方式的xinference管理小模型,带鉴权、带本地模型加载embedding、rerank模型不少,需要一个框架来集中管理,选用了xinference,使用简单。采取容器化部署: 1、镜像下载:原始模型下载慢,采用渡渡鸟,下载 2…