数据结构-排序算法比较(内部排序)

2023-11-13

内部排序算法的比较

  1. 时间复杂度
最坏 最好 平均
直接插入 O(n2) O(n) O(n2) 折半插入与之类似
冒泡 O(n2) O(n) O(n2)
简单选择 O(n2) 与初态无关
希尔 O(n1.3) 具体不确定
快排 O(n2) O(nlog2n) 分治
归并 O(nlog2n) 分治
堆排序 O(nlog2n) 线性时间建堆
基数排序 O(d(r+n)) 与初态无关
  1. 空间复杂度
最坏 平均
直接插入 O(1)
冒泡 O(1)
简单选择 O(1)
希尔 O(1)
快排 O(n) O(log2n) 递归栈
归并 O(n)
堆排序 O(1)
基数 r队列

3.稳定性

稳定性 排序
稳定 直接插入,折半插入,冒泡,归并,基数
---------- ----------------------------
不稳定 希尔,快速,简单选择,堆排序
  1. 特点
  • 冒泡,子序列全局有序

  • 简单选择,子序列全局有序

  • 快速,每次确定一个元素的最终位置

    若选取第一个元素作pivot(枢轴)
    当前序列越有序,复杂度越趋于O(n2)

  • 堆排序,子序列全局有序

    适合关键字较多的情况

    例:查找出1000个数中最大的10个

    解:使用前10个数建立小根堆,每次从后面剩余中取1个数,与根比较,若大则将 根替换,否则舍弃取下一个数比较。

  • (直接,折半)插入排序,子序列局部有序

  • 希尔排序

    堆排序一样,不适合用链式结构,因为是跳着读取,应用了顺序表的随机访问存取性质,若改为链式存储,则会降低算法效率

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构-排序算法比较(内部排序) 的相关文章

  • 线程池源码分析(一)

    最近在阅读 阿里巴巴Java开发手册 的时候 书中有这么一段话 线程池这块理解不是很深 今天就抽时间重新学习一遍 对于书中的问题分析完成后答案便一目了然 创建线程池的一个方式 ExecutorService e Executors newF
  • 三维重建_COLMAP安装、使用和参数说明(翻译自官方文档)

    近期因为想要入选学校某位很厉害的老师的某个项目 布置的小任务就是先把colmap以及openMVS跑一跑 我就记录了一下学习的经过 一 Ubuntu上源码编译colmap 参考网址 https colmap github io instal
  • 单片机串口控制树莓派3B播放HDMI视频,omxplayer,

    使用树莓派3B通过HDMI播放视频 并且使用串口去控制播放哪个视频 1 问题解耦 单片机串口控制树莓派3B播放视频 树莓派播放视频 单片机串口传参控制树莓派 树莓派播放视频 树莓派播放视频 并且能用串口这种简单的通信方式去控制 应该是需要安
  • java实现写大量数据到文件中

    生成 txt文件 生成 csv文件 生成 xls文件 import java io BufferedWriter import java io File import java io FileOutputStream import java
  • 【缓存】缓存,这么用才真正达到缓存的效果

    1 概述 转载 https zhuanlan zhihu com p 62508629 一 什么是缓存 平常的开发项目中 多多少少都会使用到缓存 因为一些数据我们没有必要每次查询的时候都去查询到数据库 一个形象的比喻 数据库是人的身体 缓存
  • 序列比对算法-计算生物学

    1 序列比对指将两个或多个序列排列在一起 标明其相似之处 序列中可以插入间隔 通常用短横线 表示 对应的相同或相似的符号 在核酸中是A T 或U C G 在蛋白质中是氨基酸残基的单字母表示 排列在同一列上 这一方法常用于研究由共同祖先进化而
  • CSS 3D转换——transform 属性的 rotatex() 方法和 rotatey() 方法

    目录 CSS 3D转换 浏览器支持 转换属性 3D Transform方法 常用方法 rotatex 方法 rotatey 方法 结语 CSS 3D转换 CSS3 允许我们使用 3D 转换来对元素进行格式化 浏览器支持 表格中的数字表示支持

随机推荐

  • 无线局域网下的远程控制、文件传输以及代理设置[Windows

    需求 在同一个路由器连接的局域网下 Ubuntu通过Windows端上网 Windows端远程控制Ubuntu系统 主机 Windows10 被操控端 Ubuntu18 04 在Windows方下载一个客户端 如Termius 远程控制和操
  • sql注入(报错注入)适用于union无法使用的情况

    extractvalue函数原理 这是一个对xml文件进行查询的函数 它的作用是 会从目标xml文件中返回所包含查询值的字符串 标准语法为 extractvalue XML document Xpath string extractvalu
  • for循环实现1-100之间偶数和

    package com itheima 04 需求 求出1 100之间偶数和 分析 A 定义求和变量 初始化值是0 B 获取1 100之间的数据 用for循环实现 C 把获取到的数据进行判断 看是否是偶数 如果是 就累加 D 输出求和结果
  • kernel:关于linux内核重要文件的基本描述

    linux Makefile 文件 这个Makefile文件的主要作用是指示make程序最终使用独立编译连接成的tools 目录中的build执行程序将所有内核编译代码连接和合并成一个可运行的内核映像文件 image 具体是对 boot 中
  • 协处理器cp15

    CP15访问CP15寄存器的指令 在基于ARM的嵌入式应用系统中 存储系统通常是通过系统控制协处理器CP15完成的 ARM处理器使用协处理器CP15的寄存器来控制cache 极高速缓存 TCM 高速缓存 和存储管理 CP15包含16个32位
  • anaconda的安装和常用指令

    1 下载anaconda之后 首先打开anaconda prompt 输入 conda version获取当前anaconda的版本 有可能会出现 首先要清理所有的包 conda clean packages tarballs 可以Win
  • 如何控制Spring bean的生命周期

    先了解下Spring bean的生命周期 创建 初始化 销毁 这对读懂Spring源码十分有帮助 控制Spring bean的生命周期有3种方式 下面分别用代码展示 方式一 Bean 注解上手动指定bean的初始化方法和销毁方法 Confi
  • 操作系统 存储管理 分页分段

    操作系统 存储管理 分页分段 分页存储管理 是将一个进程的逻辑地址空间分成若干个大小相等的片 称为页面或页 并为各页进行编号 从0开始 分页地址中的地址结构如下 页表实现了从页号到物理块号的地址映像 通过查找该表 即可找到每页在内存中的物理
  • c语言在线翻译器,【C语言】【window】--在线翻译器.doc

    C语言 Windows 在线翻译器 01 程序简介 程序名称 编译器 vs2010 其它也可以 程序大小 10K 文件包括 exe skinh she SkinH dll msvcr100 dll 程序界面 02 任务说明 光影队 任务 L
  • 自定义JSP中的Taglib标签之四自定义标签中的Function函数

    Java代码如下 自定义JSP中的Taglib标签之四自定义标签中的Function函数 package org lxh taglib import java util List public class FunctionTag publi
  • 报错"your evaluation license has expired, pycharm will now exit"

    1 修改C Windows System32 drivers etc hosts文件 将 0 0 0 0 account jetbrains com 添加到hosts文件的最后一行2 访问 http idea lanyus com 获取注册
  • NIO下载超大文件(支持20个G)

    服务端 nio将文件流写入response author zhanghp2017he foxmail com date 2022 8 22 param response return void exception RequestMappin
  • 【LeetCode75】第二十九题 删除链表的中间节点

    目录 题目 示例 分析 代码 题目 示例 分析 给我们一个链表 让我们把链表中间的节点删了 那么最直观最基础的办法是遍历两边链表 第一遍拿到链表长度 第二次把链表中间节点删了 这个暴力做法我没事过 不过貌似是可以解决问题的 所以我觉得这题的
  • React-router 5.0 利用高阶函数实现路由嵌套(web)

    如今 react router 已经升级到v5 0版本 v4 0版本做了较大的改革 代码中依然使用v3 0版本的写法 于是准备整改为v4 0以上版本 遇到了很多坑 于是做个笔记 首先 对比一下 v3 0 和 v4 0 版本 v4 0提供了r
  • librdkafka consumer封装的一点总结

    关于librdkafka producer可以看这里 consumer相较于producer需要注意的问题就少得多了 首先是初始化 string errstr unique ptr
  • 移植3- uboot之nandflash驱动移植

    2014 8 18 在上一篇文章中 我们已经将uboot启动起来了 但是如何将uboot spl搞到nandflash中去 这样可以拨动拨码开关选择nandflash启动 就可以从nandflash启动了呢 因此需要在uboot中实现nan
  • hooks api 详细demo

    本文所有代码demo https stackblitz com edit react hooks memo gwv9c6 file index js overview deep div How do React hooks really w
  • MYSQL group by后删除每个分组中的重复数据,只保留最新一条

    一 需求 MYSQL group by后删除每个分组中的重复数据 只保留最新一条 二 实现 获取 group by后每个分组中除去最新一条记录的其他重复数据 SELECT FROM test WHERE test user id IN 按照
  • 用python写一个猜数字小游戏

    需要用到python的random库来随机生成一个需要用户猜的数字 之后判断用户输入的数字 与生成的数字比较 并告知用户 先随机生成一个随机数 num random randint 1 49 随机生成一个1 49的数字 判断用户输入的数字
  • 数据结构-排序算法比较(内部排序)

    内部排序算法的比较 时间复杂度 最坏 最好 平均 注 直接插入 O n2 O n O n2 折半插入与之类似 冒泡 O n2 O n O n2 简单选择 O n2 与初态无关 希尔 O n1 3 具体不确定 快排 O n2 O nlog2n