【CPP】直接选择排序、堆排序

目录

  • 1.选择排序
    • 1.1简介
    • 1.2代码
    • 1.3分析
  • 2.堆排序
    • 2.1简介
    • 2.2代码
    • 2.3分析

1.选择排序

1.1简介

思路:遍历一遍,选出最大值和最小值的下标,然后与第一个和最后一个数字交换位置。

在这里插入图片描述

1.2代码

在这里插入图片描述

1.3分析

最好复杂度:O(N^2)
最差复杂度:O(N^2)

理论上,在数据量较大情况下,这是一个比冒泡排序效率 略好 的排序算法。
略好:一次换两个数,所以等差数列是n,n-2,n-4…冒泡等差数列是n,n-1,n-2…

2.堆排序

堆排序也是选择排序的一种,也是选一个最值放到最后面,再选一个次最值,放到倒数第二的位置,唯一的区别是借助了堆这个数据结构。

2.1简介

堆排:先建堆,后排序

  • 建堆:向下调整算法建堆。

为什么不用向上调整算法建堆?
思考:向上调整算法与向下调整算法同为调整算法,且时间复杂度都为O(logN),为什么向下调整算法建堆的时间复杂度为O(N),而向上调整算法却到达了O(N*logN)?
答:
说的简单一点,对于单个结点的向上调整/向下调整,都大概最差要调整高度次,也就是差不多是logN,但是对于一整个堆而言,这个堆中如果用向上调整算法,第一行不需要调整,如果用向下调整算法,最后一行不需要调整,而往往在N足够大的情况下,最后一行的结点个数占百分之50左右。
在这里插入图片描述

  • 排序:首尾交换,然后向下调整算法使其成堆。
    在这里插入图片描述

小堆 --> 降序
大堆 --> 升序

2.2代码

在这里插入图片描述

2.3分析

向下调整算法时间复杂度:O(logN)
在这里插入图片描述
向下调整算法时间复杂度:O(logN)

数组从后向前建堆:O(N)
原因:最后一排占数据的大多数,却没有进行向下调整(最后一排下面没有数字)

堆排序 = 建堆 + 排序 = O(N*logN)

堆排与希尔排序的适应性:
堆排序与希尔排序是一个效率量级的,两者区别在于在数据大量具有相同的数字时候,希尔会快一些,数据大部分都不一样的时候,堆排快一些。


EOF

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

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

相关文章

振动分析-5-基于CNN的机械故障诊断方法

参考基于CNN的机械故障诊断方法 CNN之图像识别 预训练模型迁移学习(Transfer Learning) 基于卷积神经网络(CNN)的深度迁移学习在声发射(AE)监测螺栓连接状况的应用 参考基于CNN的机械故障诊断所面临的困难和…

win 打包java项目为exe一键部署,包括mysql和redis

需求:打包springboot项目在win系统下执行,并且要一键部署和开机启动 把所需的程序放在同一个文件夹 1.jdk文件夹:自己去下载,jdk8的话拿jre目录好了 2.mysql文件夹:是8.0.36版,270M精简版了 3.redis文件夹…

Microsoft AI Day:支持开放合作,普及技术应用,推进行业企业智慧化创新

微软在北京举办以“共创AI创新,智启无限可能”为主题的Microsoft AI Day活动,集中展示了在生成式智能技术加速发展普及的过程中,微软取得的最新技术突破与进展,并同步更新了在Microsoft Build 2024全球开发者大会上发布的一系列Az…

人力资源招聘社会校企类型招聘系统校园招聘小程序

校企社会人力资源招聘小程序:开启高效招聘新时代 🚀开篇:打破传统,开启招聘新篇章 在快速发展的现代社会,人力资源招聘已经成为企业和学校共同关注的重要议题。为了更高效、便捷地满足双方的招聘需求,一款…

第58章SOCKET:TCP/IP网络基础

58.1 互联网 互联网会将不同的计算机网络连接起来并允许位于网络中的主机相互之间进行通信。互联网的目标是隐藏不同物理网络的细节以便向互联网中的所有主机呈现一个统一的网络架构,TCP/IP已经成了使用最为广泛的协议套件了, 术语Internet被用来指将全球…

【架构师】听说CDN服务把公司账户余额干趴了?我不服

最近老是看到八卦消息 说是某系统用了cdn的加速服务,某些学员一晚上学员几千个小时(真好学),结果一晚上就欠费,又是几千大洋没了,吓的我赶紧上链接(呸,上控制台看看) 关于…

【网络安全学习】使用Kali做信息收集-01-<域名信息主机信息>

1.收集开源情报 开源情报(Open Source Intelligence,OSINT)是指从各种公开的渠道中寻找和获取有价值的信息 如:互联网、媒体、社交网络、公共数据库等开源情报具有以下特点: - 丰富性:开源情报涵盖了各种类型和领域的信息 - 可…

关于归一化能量与归一化功率(连续与离散+1)

前言: ① 周期信号 与 直流信号 都是功率信号 ②一个信号可以既不是能量信号也不是功率信号,但不可能既是能量信号又是功率信号 归一化能量 对于一个连续时间信号 ( x(t) ),归一化能量 ( E ) 的定义为: E lim ⁡ T → ∞ ∫ −…

macOS聚集搜索功能开启与关闭

按下command空格弹出 使用搜索 关闭搜索 sudo mdutil -a -i off 启用搜索 sudo mdutil -a -i on

深信服科技:2023网络安全深度洞察及2024年趋势研判报告

2023 年,生成式人工智能和各种大模型迅速应用在网络攻击与对抗中,带来了新型攻防场景和安全威胁。漏洞利用链组合攻击实现攻击效果加成,在国家级对抗中频繁使用。勒索团伙广泛利用多个信创系统漏洞,对企业数据安全与财产安全造成了…

[创业之路-117] :制造业企业的必备管理神器-ERP-是什么?企业经营管理与EPR的主要功能模块与全流程

目录 一、什么是EPR 1.1 跨企业的供应链思想 1.2 EPR的概念:企业资源管理计划 1.2.1 助力企业管理各种资源:人、财、物(机、料、法、环) 1.2.2 助力企业有效管理 1.2.3 效率的提升 1.4 应用领域 二、ERP的功能模块 三、E…

AI金融投资:批量下载巨潮资讯基金招募说明书

打开巨潮资讯的基金招募说明书页面: http://www.cninfo.com.cn/new/fulltextSearch/full?searchkey%E5%B0%81%E9%97%AD%E5%BC%8F%E5%9F%BA%E7%A1%80%E8%AE%BE%E6%96%BD%E8%AF%81%E5%88%B8%E6%8A%95%E8%B5%84%E5%9F%BA%E9%87%91%E6%8B%9B%E5%8B%9F%E8%AF%B4%E6%98%…

apple watch真机开发第一步连接xcode详细教程,开启watch开发者模式真的很坑啊啊啊啊啊

如何连接真机 1.首先先确保你的 Apple Watch 跟 你的 iPhone 已经配对完成 2.用数据线连接你的 iPhone 到电脑,等待一会,然后打开xcode,找到这个iphone,如果有警告提示,就需要打开开发者模式: Previous pr…

vscode + CMake编译(opencv显示图片工程)

1.opencv 2.Cmake 2.1 简介 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件;Cmake 并不直接建构出最终的软件,而是产生标准的建…

【数据结构与算法】稀疏矩阵(三元组,十字链表存储)详解

给出稀疏矩阵的节省内存的存贮结构并写出相应的输入、输出算法。 稀疏矩阵是一个大部分元素为0的矩阵。为了节省内存&#xff0c;我们可以只存储非零元素。一种常见的存储结构是三元组&#xff0c;每个三元组包含一个非零元素的行索引、列索引和值。 #include <stdio.h>…

STemWin在Windows上仿真运行环境配置

文章目录 一、STemWin介绍二、emWin必用的2个工具2.1 PC仿真器2.2 GUIBuilder图形化设计工具三、安装VS2022四、打开emwin仿真工程五、常见的配置修改5.1 运行内存修改5.2 LCD显示屏尺寸的修改一、STemWin介绍 emWin(Embedded Wizard Graphics Library)是Segger公司开发的嵌…

UE4_材质_湿度着色器及Desaturation算法_ben材质教程

学习笔记&#xff0c;不喜勿喷&#xff01;侵权立删&#xff0c;祝愿美好生活越来越好。 效果图&#xff1a; 原图&#xff1a; 1、使用初学者内容包的材质 我们这里使用虚幻自带的材质M_Brick_Clay_Old,复制一个更名为M_Brickclayoldwet材质。 2、添加去饱和度Desaturation节…

【代码随想录】【算法训练营】【第43天】 [518]零钱兑换II [377]组合总和IV [卡码57]爬楼梯

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 部分题目来自卡码网。 day 43&#xff0c;极其困难的周三~ 题目详情 [518] 零钱兑换II 题目描述 518 零钱兑换II 解题思路 前提&#xff1a;假设每一种面额的硬币有无限个&#xff0c;求组合数…

Java23种设计模式(一)

前言 这2个月来&#xff0c;重新出发&#xff0c;从java开发需要的数据库、查询日志工具、开发工具等的安装、环境配置&#xff0c;再到后面的基础学习、数据库学习、扩展学习&#xff08;maven、mq、设计模式、spring 系列等等&#xff09;&#xff0c;边学边记录&#xff0c…

QT串口调试助手V2.0(源码全开源)--上位机+多通道波形显示+数据保存(优化波形显示控件)

首先关于Qt的安装和基本配置这里就不做重复说明了&#xff0c;注&#xff1a;本文在Qt5.14基础上完成 完整的项目开源仓库链接在文章末尾 图形控件——qcustomplot QCustomPlot是一个基于Qt框架的开源绘图库&#xff0c;用于创建高质量的二维图表和数据可视化。 QCustomPlot…