软设之排序算法对比

直接插入 

时间复杂度:平均情况为O(n^2)。特殊情况下基本有序最优为O(n)

空间复杂度:O(1)

希尔排序

时间复杂度:平均情况O(n^1.3)

空间复杂度:O(1)

直接选择排序

时间复杂度:O(n^2)

空间复杂度:O(1)

堆排序

时间复杂度:O(nlog(2)n)

空间复杂度:O(1)

冒泡排序

时间复杂度:平均情况O(n^2)

空间复杂度:O(1)

快速排序

时间复杂度:平均情况O(nlog(2)n),基本有序最差是O(n^2)

空间复杂度:O(1)

归并排序

时间复杂度 O(nlog(2)n)

空间复杂度O(n)

基数排序

时间复杂度:O(d(n+rd))

空间复杂度:O(rd)

排序算法选择

如果数据元素数目n比较小,可采用直接插入排序和简单选择排序

如果要排列记录基本有序,可以采用直接插入排序或冒泡排序

如果数据数目很大,应采用时间复杂度为O(nlog(2)n)的排序方法。

快速排序目前被认为是内部排序中最好的方法,如果待排序的关键字为随机分布,快速排序的平均运行时间最短

堆排序只需要一个辅助空间,并且不会出现在快速排序中可能出现的最快情况

快速排序和堆排序都是不稳定的排序方法,如果追求排序稳定,可选择归并排序。

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

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

相关文章

第6章:数据库设计基础知识

数据库基本概念 数据(Data)是描述事物的符号记录,它具有多种表现形式,可以是文字、图形、图像、声音和语言等。数据库系统(DataBase System,DBS)是一个采用了数据库技术,有组织地、动态地存储大量相关联数据,从而方便多…

3162. 优质数对的总数 I

给你两个整数数组 nums1 和 nums2&#xff0c;长度分别为 n 和 m。同时给你一个正整数 k。 如果 nums1[i] 可以被 nums2[j] * k 整除&#xff0c;则称数对 (i, j) 为 优质数对&#xff08;0 < i < n - 1, 0 < j < m - 1&#xff09;。 返回 优质数对 的总数。 示…

第100天:权限提升-数据库RedisPostgre第三方软件TV向日葵服务类

目录 思维导图 案例一: 数据库-Redis 数据库权限提升-计划任务 案例二: 数据库-PostgreSQL 数据库权限提升-漏洞 PostgreSQL 提权漏洞&#xff08;CVE-2018-1058&#xff09; PostgreSQL 高权限命令执行漏洞&#xff08;CVE-2019-9193&#xff09; 案例三: 三方应用-…

【数据结构与算法 经典例题】(C语言)反转链表图文详解

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法 经典例题》C语言 期待您的关注 ​ 目录 一、问题描述 二、解题思路分析 三、代码实现 一、问题描述 二、解题…

c++ 函数作为参数

在C中&#xff0c;函数指针或函数对象可以作为参数传递给另一个函数&#xff0c;实现了函数的动态调用和灵活性。这种机制在回调函数、事件处理、泛型编程等领域中非常有用。 1.函数指针作为参数&#xff1a; 函数指针可以指向特定函数&#xff0c;并被用作参数传递给另一个函数…

uniapp使用uQRCode页面不显示也不报错

我使用的版本是&#xff1a;4.0.6 引入到项目中后根据官方的配置教程进行配置&#xff1a; 但是页面上就是不显示&#xff0c;也不报错&#xff0c;看官网发现步骤也没问题 解决方法&#xff1a; 这句话代表的是uQrcode会被自动引用注册&#xff0c;但是你引过组件库或者别的…

Java进阶学习笔记37——正则表达式

正则表达式&#xff1a; 就是由一些特定的字符组成的&#xff0c;代表的是一个规则。 作用&#xff1a; 1&#xff09;用来校验数据格式是否合法&#xff1b; 校验电话号码是否合法&#xff1b; 校验邮箱是否合法&#xff1b; 用户输入的QQ号码是否合法&#xff1b; 2&…

QT treeWidget如何添加虚线

1、添加以下代码即可&#xff1a; ui.treeWidget->setStyle(QStyleFactory::create("windows"));2、效果如下&#xff1a;

基于 vue-element-template 框架添加 tagsview

1. 需求 vue-element-template 是一个基础模板&#xff0c;默认没有 tagsview。所以要手动添加。 参考最全面的集成方案框架 vue-element-admin &#xff0c;拷贝和修改相关文件到你的项目中。 2. 修改 复制如下文件或文件夹 \src\layout\components\TagsView\src\store\mo…

Windows11+Ubuntu24.04双系统安装及配置

目录 0. 前言1. Ubuntu24.04的安装2. Ubuntu24.04的配置2.1 基本配置2.2 开发环境配置 0. 前言 我去年在做一个项目的时候需要用到ros&#xff0c;ros需要运行在Ubuntu系统上。但我的笔记本电脑配置不是很好&#xff0c;采用虚拟机运行的想法随之被否决&#xff0c;决定采用安…

【ZZULI数据结构实验四】:C语言排序算法大比拼

&#x1f4c3;博客主页&#xff1a; 小镇敲码人 &#x1f49a;代码仓库&#xff0c;欢迎访问 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f30f; 任尔江湖满血骨&#xff0c;我自踏雪寻梅香。 万千浮云遮碧…

分离式光电液位传感器与浮球开关相比具有哪些优势

分离式光电液位传感器与浮球开关相比有哪些优势&#xff1f;分离式光电液位传感器依据光学原理&#xff0c;在传统光学传感器的基础上进行了改进。其特点是将光学组件分离出来&#xff0c;置于水箱外部感应&#xff0c;而传感器本身则独立于水箱外。这种设计有效解决了浮球开关…

EtherCAT 和 UDP 通讯的实时性 区别

EtherCAT 和 UDP 是两种不同的通信协议&#xff0c;它们在实时性方面有着本质的区别&#xff0c;主要体现在以下几个方面&#xff1a; 实时性设计目的&#xff1a; EtherCAT 是专为工业自动化设计的实时以太网协议&#xff0c;它通过独特的数据通信机制实现了极高的实时性能。E…

【智能算法】花斑翠鸟优化算法(PKO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;A Bouaouda受到自然界中花斑翠鸟社会行为启发&#xff0c;提出了花斑翠鸟优化算法&#xff08;Pied Kingfisher Optimizer, PKO&#xff09;。 2.算法原理 2.1算法思想…

mac安装nigix

1. 查看是否存在 nginx 执行brew search nginx 命令查询要安装的软件是否存在 brew search nginx 2. 安装nginx brew install nginx 3. 查看版本 nginx -v 4. 查看信息 查看ngxin下载的位置以及nginx配置文件存放路径等信息 brew info nginx 下载的存放路径 /usr/loca…

Vue3-Pinia状态管理器

Pinia 是 Vue 的专属状态管理库&#xff0c;它允许你跨组件或页面共享状态。如果你熟悉组合式 API 的话&#xff0c;你可能会认为可以通过一行简单的 export const state reactive({}) 来共享一个全局状态。对于单页应用来说确实可以&#xff0c;但如果应用在服务器端渲染&…

OVF(Open Virtualization Format)或OVA(Open Virtual Appliance)格式有什么区别

OVF&#xff08;Open Virtualization Format&#xff09;和OVA&#xff08;Open Virtual Appliance&#xff09;是两种不同的文件格式&#xff0c;它们都是用于虚拟机的打包和交换的开放标准。以下是它们之间的主要区别&#xff1a; 1. **OVF&#xff08;Open Virtualization …

Ant-Design-Vue动态表头并填充数据

Ant-Design-Vue动态表头并填充数据 Ant-Design-Vue 是一个基于 Vue.js 的前端UI框架&#xff0c;它继承了 Ant Design 的优秀设计理念&#xff0c;并针对 Vue.js 进行了深度优化。在实际开发过程中&#xff0c;我们经常需要处理各种复杂的表格数据&#xff0c;而 Ant-Design-V…

Renesas MCU之使用Keil搭建开发环境

目录 概述 1 软件安装 1.1 软件版本信息 1.2 安装FSP 1.3 安装和配置Keil 2 使用FSP创建工程 2.1 FSP中配置参数 2.2 配置板卡硬件资源 3 Keil中配置项目 3.1 在Keil配置FSP 3.2 添加user src目录 3.3 配置下载项 3.4 测试下载功能 4 使用stm32 NUCLEO板卡的ST-L…

elementplu父级页面怎么使用封装子组件原组件的方法

一、使用原因&#xff1a; 封装了el-table&#xff0c;表格中有多选&#xff0c;父级要根据指定状态&#xff0c;让其选择不上&#xff0c;需要用到elementplus中table原方法toggleRowSelection 附加小知识点&#xff1a;&#xff08;el-tree刷新树后之前选中的保持高亮setCurr…