Java版常用排序算法复杂度
分析&回答
算法复杂度分为时间复杂度和空间复杂度。其作用:
- 时间复杂度是指执行这个算法所需要的计算工作量;
- 空间复杂度是指执行这个算法所需要的内存空间;
时间和空间都是计算机资源的重要体现,而算法的复杂性就是体现在运行该算法时的计算机所需的资源多少;
排序算法 | 英文名称 | 平均时间复杂度 | 最好情况 | 最坏情况 | 空间复杂度 | 排序方式 | 稳定性 |
---|---|---|---|---|---|---|---|
冒泡排序 | Bubble | O(n²) | O(n) | O(n²) | O(1) | In-place | 稳定 |
选择排序 | Selection | O(n²) | O(n²) | O(n²) | O(1) | In-place | 不稳定 |
插入排序 | Insertion | O(n²) | O(n) | O(n²) | O(1) | In-place | 稳定 |
希尔排序 | Shell | O(n ㏒n) | O(n ㏒²n) | O(n ㏒²n) | O(1) | In-place | 不稳定 |
归并排序 | Merge | O(n ㏒n) | O(n ㏒n) | O(n ㏒n) | O(n) | Out-place | 稳定 |
快速排序 | Quick | O(n ㏒n) | O(n ㏒n) | O(n²) | O(㏒n) | In-place | 不稳定 |
堆排序 | Heap | O(n ㏒n) | O(n ㏒n) | O(n ㏒n) | O(1) | In-place | 不稳定 |
计数排序 | Counting | O(n + k) | O(n + k) | O(n + k) | O(k) | Out-place | 稳定 |
桶排序 | Bucket | O(n + k) | O(n + k) | O(n²) | O(n + k) | Out-place | 稳定 |
基数排序 | Radix | O(n × k) | O(n × k) | O(n × k) | O(n + k) | Out-place | 稳定 |
反思&扩展
特别关注快速排序、归并排序
O(x)是啥意思?
简单直观的 O(1) 、 O(n) 、O(log n) 复杂度说起
- O(1) 表示一次操作即可直接取得目标元素(比如字典或哈希表),
- O(n) 意味着先要检查 n 个元素来搜索目标
- O(log n) 时间复杂度可能是在学二分搜索算法
为了大家更加方便的刷题,我们对文章进行了分类和整理,免费为大家提供刷题服务。程序员不欺骗程序员,赶紧扫码小程序刷起来!
为了一站式解决面者刷题问题,部分内容可能存在摘录情况,如有侵权辛苦您留言联系我们,我们会删除文章或添加引用文案,Thanks!
Java版常用排序算法复杂度相关推荐
- Java折半二叉树,成都汇智动力-Java实现常用排序算法
原标题:成都汇智动力-Java实现常用排序算法 排序算法介绍 1. 基本概念 稳定性: 待排序的数列中,若两个元素的值相等 R1 = R2 ,在排序结束之后,元素之间的相对位置没有发生变化,则称排序算 ...
- 常用排序算法复杂度分析
1.排序大类 排序算法大致可以分为两大类:内部排序和外部排序.内部排序指的是排序数据都存储在内存中.外部排序则需要借助到外出.常用排序算法都为内部排序. 2.内部排序分类 (1)插入排序:直接插入排序 ...
- java插入排序实现,经典(Java版)排序算法的分析及实现之一直接插入排序
预备知识 排序算法从功能上是对一个数据元素集合或序列重新排列成一个按数据元素某个相知有序的序列.从内存空间使用简单上看分为内部排序和外部排序. 内部排序是数据记录在内存中进行排序,适合不太大的元素序列 ...
- 数据结构Java版之排序算法(二)
排序按时间复杂度和空间复杂度可分为 低级排序 和 高级排序 算法两种.下面将对排序算法进行讲解,以及样例的展示. 低级排序:冒泡排序.选择排序.插入排序. 冒泡排序: 核心思想,小的数往前移.假设最小 ...
- 数据结构和常用排序算法复杂度
1.顺序表 插入操作时间复杂度 最好O(1),最坏O(n),平均O(n) 移动结点的平均次数n/2 删除操作时间复杂度 最好O(1),最坏O(n),平均O(n) 移动结点的平均次数(n-1)/2 按值 ...
- python版 常用排序算法 思路加详解 冒泡排序、快速排序、插入排序、选择排序
注:这里所有排序操作都以从小到大排列为例,想要从大到小排的自行修改代码即可 目录 一.冒泡排序 思路: 步骤: 解析: 二.快速排序 思路: 步骤: 代码: 三.插入排序 思路: 代码: 四.选择排序 ...
- java实现apriori算法_七大经典、常用排序算法的原理、Java 实现以及算法分析
0. 前言 大家好,我是多选参数的程序员,一个正再 neng 操作系统.学数据结构和算法以及 Java 的硬核菜鸡.数据结构和算法是我准备新开的坑,主要是因为自己再这块确实很弱,需要大补(残废了一般) ...
- 我们一起来排序——使用Java语言优雅地实现常用排序算法
破阵子·春景 燕子来时新社,梨花落后清明. 池上碧苔三四点,叶底黄鹂一两声.日长飞絮轻. 巧笑同桌伙伴,上学径里逢迎. 疑怪昨宵春梦好,元是今朝Offer拿.笑从双脸生. 排序算法--最基础的算法,互 ...
- java 性能 排序_Java常用排序算法及性能测试集合
package algorithm.sort; import java.lang.reflect.Method; import java.util.Arrays; import java.util.D ...
- [转载] java实现四种常用排序算法
参考链接: 用Java排序 四种常用排序算法 ##注:从小到大排 ##冒泡排序## 特点:效率低,实现简单 思想:每一趟将待排序序列中最大元素移到最后,剩下的为新的待排序序列,重复上述步骤直到排完所有 ...
最新文章
- android闹钟例子,自己软件中调用android系统闹钟
- utf-8编码的字符串转成unicode(ucs-4)编码的字符串
- 9月第1周国内搜索类网站频道:百度覆盖数创新高
- go micro 学习笔记 2:环境搭建(可运行示例)
- python水印 resized_如何改进Python中的水印图像?
- 【转载】Ubuntu环境下配置Android Studio
- Linux下安装MySQL数据库、禅道
- Doc2vec在推荐系统中的应用(含算法原理、代码实现)
- Android的快速开发框架 afinal
- Swift 枚举的用法
- app一键签名工具 --- Android Sign Kit v1.0免费版
- ArcMap无法启动解决方法
- 矩阵微分常用公式整理
- chrome regedit 崩溃_谷歌浏览器网页崩溃的解决方法
- git获取管理员权限 windows_windows中命令行窗口提权到管理员权限.windows 的 sudo
- 基于Domoticz智能家居系统(十七)DIY一款基于MySensors的ESP8266+NRF24L01的MQTT(WIFI)和RF无线网关(三)一个简单MySensors客户端的验证实验
- 人工智能需要学习哪些编程语言?学人工智能要学python吗?
- 勇敢面对人生的苦难,时光不负赶路人
- 福师《计算机应用基础》在线作业一,福师《计算机应用基础》在线作业一答案...
- Android 方向感应器实现指南针