排序(基数,堆,归并)

news2024/11/14 17:05:17

基数排序

定义0-9十个桶,先排序个数,在排序十位,依次向下(桶就是二维数组)

按照个位先排一次

个位已经有序了,桶内遵循先进先出

没有十位放到0里

取出

百位

这样排序就完成了。放进取出几次,取决于最大数一共有几位。

时间复杂度

按照个位:挨个遍历,挨个取出----O(n)

最大数k位 复杂度O(kn)

堆排序

1.利用完全二叉树构建大顶堆

2.堆顶元素和堆底元素进行交换,除堆底元素,剩余元素继续构建大顶堆。

3.不断重复2,直到排序完成

完全二叉树:要求数据必须从上到下,从左到右的顺序

这就是一个完全二叉树

什么是大顶堆:父节点的值大于或等于其左右节点的值

堆顶元素:arr[0] 堆底元素 arr[arr.length-1]

0的左右孩子 1 2 1的左右孩子 3 4 2的左右孩子 5 6

所有得出结论 arr[i]的左孩子是 arr[2i+1] arr[i]的右孩子是 arr[2i+2] arr[i]的父节点是 arr[(i-1)/2]

arr[i]>=arr[2i+1] && arr[i]>=arr[2i+2]

如何构建大顶堆???

从后往前检测每一个节点是否符合大顶堆,符合检测前一个,不符合对其进行维护,让其符合大顶堆

1.定义parent游标指向该节点

2.定义parent的左孩子 child=2*parent+1,判断有没有左孩子,没有则符合大顶堆,如果有左孩子,判断有没有右孩子。有右孩子,左右孩子进行比较,child指向左右孩子中最大的值

3.父子节点进行比较

4.父节点大,符合大顶堆,继续向前检测

5.子节点的值大,父子节点进行交换,交换完成,parent指向child,child指向左右孩子最大值,继续比较parent和child,直到parent的值大,或者child为空

6.重复以上操作

形成大顶堆,堆顶堆底交换,7不参与构建了

然后继续形成大顶堆,继续交换就好了

时间复杂度

1层 1个数据

2层 2

3层 4

4层 8

k层 2^(k-1)

2^k -1 =n

k=log2n

维护一个节点的时间复杂度O(logn)

维护N个节点 O(Nlogn)

初始化一个堆时间复杂度O(n)

整个堆排序时间复杂度 O(nlogn)

归并排序

合并有序序列

s1 s2不断比较谁小谁进去

归并排序: 先拆分在合并

拆分:从中间位置拆开,数据分左右两部分,继续拆分,直到拆成一个一个停止

然后在比较合并

时间复杂度:

第一次拆分 2个数组

2 4

3 8

k x

x=2^k k=log2x

合并 合并一次会把数据都遍历一边

时间复杂度 O(logn)*O(n)=O(nlogn)

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

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

相关文章

多线程执行的3种场景示例代码

1.环境 语言:java jdk版本:1.8 2.三种线程池场景使用 2.1 固定线程数执行,每个线程只执行1次,最后全部执行完毕后再进入最终方法处理收尾 public static void testEveryThreadFixedExecuteOne() {int threadNum 4;ThreadPoolExe…

C++ | 探索C++多态:虚函数与抽象类的奥秘

目录 二、多态:统一接口下的行为多样性 1、多态的概念 2、多态的实现和构成条件 1、虚函数(Virtual Function) 2、虚函数重写 3、抽象类与接口继承 4、重载、覆盖(重写)、隐藏(重定义)的对比 重载(Overloading) 覆盖&a…

vulnhub靶机 W34KN3SS(渗透测试详解)

一、靶机信息收集 1、靶机下载地址 https://download.vulnhub.com/w34kn3ss/W34KN3SS.ova 2、扫描靶机IP 3、探测靶机端口、主机、服务版本信息 nmap -sS -sV -A -p- 192.168.31.160 4、进行目录扫描 二、web渗透测试 1、访问靶机IP 没什么发现 2、进行目录拼接访问 拼接…

【鸿蒙学习】HarmonyOS应用开发者基础 - 构建更加丰富的页面(一)

学完时间:2024年8月14日 一、前言叨叨 学习HarmonyOS的第六课,人数又成功的降了500名左右,到了3575人了。 二、ArkWeb 1、概念介绍 ArkWeb是用于应用程序中显示Web页面内容的Web组件,为开发者提供页面加载、页面交互、页面调…

Your local changes would be overwritten by merge git

方法二 直接覆盖本地的代码,放弃自己本地的改动,只保留服务器端代码 直接回退到上一个版本,再进行pull。 【步骤】 直接 VCS -> Git -> Reset HEAD… 选择需要的reset模式:hard(即放弃本地代码,新修…

Unity引擎加密方案解析

据悉,Unity引擎的全球市场占有率已经超过50%,而在全球排名前1000的手游当中,这一数据更是高达73%。不止如此,Unity在中国拥有高达350万的注册用户,《崩坏星穹铁道》、《王者荣耀》等爆款游戏均为Unity引擎开发。 庞大…

使用 LabVIEW 编程更改 IMAQ/IMAQdx 接口的相机文件

问题详情 可能需要通过编程方式更改与 IMAQ/IMAQdx 接口关联的相机文件。这种需求通常发生在图像采集系统中,例如使用 PCIe-1433 硬件时,可能需要动态切换不同的相机配置文件来适应不同的应用场景。 解决方案 当前在 Measurement & Automation Ex…

博出精彩,向新而行!2024海博思创应届毕业生集训营圆满结营

近日,海博思创迎来了一群充满活力的新海博人,他们带着对未来的憧憬与梦想,即将在这里开启自己职业生涯的首个篇章。7月26日,公司为2024年应届毕业生举行了集中培训结营仪式,标志着他们正式完成了“职场第一课”。 本次…

html+css+js网页设计 移动端 京东6个页面

htmlcssjs网页设计 移动端 京东6个页面 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#…

【已解决】windows如何修改MAC地址

问题介绍: 在公司的电脑上使用另一个网口连接网线,无法使用网络。原因是因为使用公司网络需要向公司申请,公司需要通过MAC地址开通上网权限。解决办法:通过将可以该网口的MAC地址绑定为可以上网的MAC地址 电脑系统 windows11 打开…

卫星直击俄乌前线:俄罗斯在库尔斯克地区修筑防御工事

俄罗斯武装力量军事政治总局副局长阿普季阿劳季诺夫14日说,约1.2万名乌克兰及其他国家士兵近日进入俄罗斯库尔斯克州。 乌克兰总统弗拉基米尔泽连斯基同一天表示,乌军在库尔斯克地区“进展顺利”。 卫星图像显示,俄罗斯在库尔斯克利戈夫地区…

ArcGIS简单介绍

ArcGIS体系结构 (1)GIS Server 宿主各种GIS资源,将他们封装为服务提供给客户端应用。GIS Server分为两部分:Server Object Manager(SOM)和Server Object Containers(SOCs)。一个SO…

数据在内存中的存储(了解大小端字节序浮点数在内存中存储)详细~

目录 1、整数在内存中的存储 2、了解大小端字节序 2.0 为什么有大小端之分呢? 3、练习题 3.1 练习01 3.2 练习02 3.3 练习03 3.4 练习04 3.5 练习05 3.6 练习06 4、浮点数在内存中的存储 4.0 浮点数在计算机内部的表示方法 4.1 浮点数存的过程 4.2 浮点数取的过…

FreeRTOS——优化系统(基于百问网FreeRTOS教学视频)

文章目录 一、精细调整栈大小二、打印所有任务的栈信息三、统计CPU占比找出有问题的任务 一、精细调整栈大小 在创建任务时分配了栈,可以填入固定的数值比如 0xa5,以后可以使用以下函数查看" 栈的高水位",也就是还有多少空余的栈空…

完美解决RTX5源码工程+最新emWin6.40的编译兼容问题,使能C编译器使用C11可解决

最新的emWin6.40仅提供了.a格式库,这个库兼容MDK,IAR和GCC,但是在MDK AC6下使用需要做如下操作 -fno-short-wchar -fshort-enums 他这个操作,正好跟RTX5源码工程添加的一个设置冲突了,通过搜索资料,发现使…

性能测试 —— linux服务器搭建JMeter+Grafana+Influxdb监控可视化平台!

前言 在当前激烈的市场竞争中,创新和效率成为企业发展的核心要素之一。在这种背景下,如何保证产品和服务的稳定性、可靠性以及高效性就显得尤为重要。 而在软件开发过程中,性能测试是一项不可或缺的环节,它可以有效的评估一个系…

优先级队列的实现

什么是优先级队列 优先级队列是一种特殊的数据结构,它类似于队列或栈,但是每个元素都关联有一个优先级或权重。在优先级队列中,元素的出队顺序不是简单地按照它们进入队列的先后顺序(先进先出,FIFO)&#…

vulnhub靶机 DC-9(渗透测试详解)

一、靶机信息收集 1、靶机下载 https://download.vulnhub.com/dc/DC-9.zip 2、靶机IP扫描 3、探测靶机主机、端口、服务版本信息 4、靶机目录扫描 二、web渗透测试 1、访问靶机IP 查看页面功能点,发现一个搜索框和登录框 2、测试一下是否存在sql注入 查看当前数…

快速解析数据挖掘,最短时间明白什么是数据挖掘------下

信息损失函数 (Information Loss Function)是衡量在数据转换或处理过程中信息丢失的程度的函数。在数据科学、机器学习和统计学中,信息损失是一个重要的概念,尤其是在数据降维、特征选择、数据压缩和隐私保护等领域。 信息损失函…

解密!抖音百万粉丝博主三维地图视频都用到了什么GIS数据和技术

引言 在抖音上有许多诸如三维地图科普局、三维地图看世界和三维地图鉴赏等百万粉丝博主靠着三维地图科普城市、景区、人文和地理视频获赞百万,在我们浏览视频时犹如身临其境一般,那么制作这些视频需要什么GIS技术呢?如何利用MapMost技术自己…