十大排序基础排序算法总结 与 速度对比

【C#】十大排序算法(动图演示+代码实现) C#十大排序 阅读详情

 1、十大排序基础排序算法总结 与 速度对比 —— 耗时测试

       测试环境:CPU: i5-3210M 2.5GHz  2.5GHz;   内存:4G;    Win10 64位系统;    VS 2015   release模式 32位。

       测试数据均为 int 类型:

              取值规则为:(rand() % (N))  *  3  -  rand() % (N) 

              红色字体表示该排序算法仅仅支持非负整数,取值规则为: (rand() % (N))  *  3;
 

十大基础排序算法 耗时测试(单位:秒)

数组大小 1w10w100w1000w 1亿平均时间复杂度   空间复杂度
未改进的冒泡排序0.1415.85--- O(n2) O(1)
改进的冒泡排序 A0.1314.66--- O(n2) O(1)
改进的冒泡排序 B0.1314.48--- O(n2) O(1)
改进的冒泡排序 C0.0910.15--- O(n2) O(1)
选择排序0.043.53--- O(n2) O(1)
直接插入排序0.021.76--- O(n2) O(1)
折半插入排序0.021.77--- O(n2) O(1)
希尔排序0.0010.0150.273.5461.31 O(nlogn) O(1)
二路快速排序0.0010.010.090.889.03 O(nlogn) O(1)
归并排序 递归版本0.0020.030.292.6828.69 O(nlogn) O(n)
归并排序 递归版本 A0.0010.0120.161.4415.12 O(nlogn) O(n)
归并排序 迭代版本0.0010.010.141.3714.43 O(nlogn) O(n)
堆排序 递归调整版本0.0010.0120.232.7637.02 O(nlogn) O(1)
堆排序 迭代调整版本0.0010.010.182.4533.76 O(nlogn) O(1)
计数排序-0.0010.0070.0580.59 O(n+k) O(k)
桶排序0.0010.010.130.939.42 O(n+k) O(n+k)
基数排序 10为基数0.0010.0080.070.77.48 O(n·k) O(n+k)
基数排序 2^k 为基数-0.0020.030.22.12 O(n·k) O(n+k)

      (* 红色字体表示该排序算法仅仅支持非负整数排序,该数据为非负整数排序的结果)

 

排序算法——十大排序算法的图示与实现 十大排序算法概览 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 前七种为比较类排序,后三种为非比较类排序。 稳定性:如果a=b,且a在b前面,排序之后仍能保证a在b前面,则为稳定的。 插入排序 逻辑 将左端第一个元素视为有序,然后遍历后面的元素,逐步插入到有序序列中。 代码实现 //插入排序 void 阅读详情

相关推荐

十大经典排序算法

性能对比随机生成区间0 ~ K之间的序列,共计N个数字,利用各种算法进行排序,记录排序所需时间。

Mr.xing的博客 3516

11 种 内部排序算法 大PK(Java 语言实现),究竟谁最快?

11 种内部排序算法

愿你饱经冷暖,仍保纯真 3715

Ubuntu docker镜像中下载安装 DPABI(DPARSF)

在Ubuntu服务器的docker镜像中用MATLAB运行DPABI(以及使用DPARSF的功能)。

Pandako's Blog 1723

排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序...

先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎不大相同,不知是因为java的缘故还是因为我算法的缘故,欢迎拍砖。 复习排序,顺便比下各种算法的速度,榜单如下: 1、冒泡排序 2、简单选择排序 3、直接插入排序 4、...

261

STM32F407控制舵机

STM32F407控制舵机运行 使用STM32F407控制舵机,首先来看下舵机图片 [黑红白,黑线接GND,红线接VCC,信号线接白色线(有的舵机线的颜色不同,例如褐色红色橘色,仅颜色不同接法还如上述)] 舵机需要信号的周期为20ms,即频率为50Hz。 接下来正式操作: 步骤一:STM32F4程序(本次程序的PWM信号产生的周期频率由定时器TIM14通道1产生(TIM14_CH1),想要使用其它定时器也没关系下面会讲到) #include "pwm.h" void TIM14_CH1_PWM_In

Ievn_Hare的博客 1万+

Livox MID-360与FAST-LIO2实战:从驱动部署到参数调优的完整指南

激光雷达惯性里程计(LIO)是机器人定位与建图(SLAM)领域的核心技术,它通过紧耦合融合激光雷达点云与惯性测量单元(IMU)数据,实现高精度、低漂移的位姿估计。其核心原理在于利用IMU的高频数据预测运动,并用激光雷达的精确测距信息进行校正与优化,从而在快速运动或特征缺失场景下保持鲁棒性。这项技术的工程价值在于为自动驾驶、移动机器人及三维重建提供了可靠的前端里程计解决方案。针对Livox MID-360固态雷达与FAST-LIO2这一热门组合,其应用场景广泛覆盖了室内外导航与地图构建。本文聚焦于**驱动部署

weixin_29997523的博客 446

十大排序算法运行速度比较

基数排序已经非常接近计数排序了,当将基数增加到20,位数降到7时,1亿的排序时间是3,432,145,并没有太大区别。当将基数增加到100,位数降到4时,1亿的排序时间是1,979,761。测试数据的最大值就是数据的数量,因此平均1个桶里只有一个数据。当数据范围是[1,N/4)时,1亿个排序时间是7,191,853,更快了一点。尤其是数据规模超过内存上限时,实行分块比较很适合,而且没有辅助内存的需求。冒泡排序比选择排序要慢很多狠多,虽然比较的次数几乎一样。希尔排序在数据量规模不大的时候比快速排序要好。

qiminixi的专栏 1827

ENSP内使用wireshark进行抓包,并且解析icmp报文

前四位:54 89 98 e8 20 38 为ip报文包的mac地址也就是物理地址。一开始进行抓包是没有icmp报文的,需要我们在ensp中使用pc1请求联通pc9。协议编号后分别为:ip版本、ip首部报文长度、服务类型、ip报文总长度。最后为校验和 、源ip地址、目的ip、从08 00开始为真正的数据。我们需要实验的端口为:0/0/4,也就是抓包第三个交换机内的报文。其中显示的icmp报文就是我们需要解析的ip报文。源mac地址后跟着的就是协议编号: 08 00。根据ip报文包的结构我们进行解析。

2301_81713278的博客 2139

算法学习笔记(2) 四种排序算法速度比较

导言 在之前介绍快速排序时提到了快速排序的时间复杂度为o(nlogn)o(nlogn)o(nlogn),然而这样的时间复杂度究竟是什么概念,依然没有做出详细的解释。这次将根据插入排序、冒泡排序、选择排序和快速排序四种算法在不同数据规模情况下的排序时间,来对算法时间复杂度的意义进行一定的剖析。 1.1插入排序 插入排序的原理是:对于一个已经从小到大排好序的序列,若往其中插入一个数,要让新序列依然有序...

weixin_43441742的博客 2134

五万字解析【ROOT 入门指南】

本文是cern官方root入门指南的初步翻译版,还在进一步校对中....

荷塘阅色 208

基于STM32的智能鞋柜系统设计与实现

摘要:本文设计并实现了一种基于STM32F103C8T6单片机的智能鞋柜系统。该系统通过DHT11温湿度传感器、PM2.5粉尘传感器和MQ-135空气质量传感器构建多维度环境监测网络,结合光电红外传感器和光敏传感器实现柜门状态识别与智能照明。系统采用分层控制策略,当温度低于15℃或湿度高于65%时自动启动加热和通风,PM2.5超标时启动通风,污染物浓度升高时激活紫外线杀菌。创新性地实现了柜门状态与紫外线消毒的双保险互锁机制,确保使用安全。测试结果表明,系统温湿度控制精度达±0.4℃/±2.0%RH,PM2.

3254968421的博客 253

十大经典排序算法(上)

冒泡排序,选择排序,插入排序,希尔排序,归并排序

weixin_68773927的博客 2万+

Arcgis中的模型构建器技术之按属性批量建库并对应输出

好久没更新了,之前我们已经介绍过四至点提取模型,前两天有同事问怎么样按属性批量建数据库并对应输出相关图斑。比如将一个县的永农数据按乡镇建立数据库并将对应乡镇的永农数据输出到相应的数据库里。今天就介绍一下相关的模型构建过程。

weixin_44671081的博客 518

十大排序算法(Top 10 Sorting Algorithms)

十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。......

果冻の技术星球 1万+

华为OD机试 - 机器人活动区域(Python/JS/C/C++ 双机位C卷 200分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。现有一个机器人,可放置于 M × N的网格中任意位置,每个网格包含一个非负整数编号。当相邻网格的数字编号差值的绝对值小于等于 1 时,机器人可在网格间移动问题:求机器人可活动的最大范围对应的网格点数目。说明:1)网格左上角坐标为 (0, 0),右

学Java,找哪吒 1434

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

十大经典排序算法——java语言

一、冒泡排序 二、选择排序 三、插入排序 四、希尔排序 五、归并排序 六、快速排序 七、堆排序 八、计数排序 九、桶排序 十、基数排序

weixin_56781779的博客 7037

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

十大经典排序算法详解(一)冒泡排序,选择排序,插入排序

目录1.算法的评判标准2.2.十大经典排序算法2.1-冒泡排序2.2-选择排序2.3-插入排序2.4-希尔排序2.5-归并排序2.6-快速排序2.7-堆排序2.8-计数排序2.9-桶排序2.10-基数排序 1.算法的评判标准 在讲解排序算法之前,我们首先来了解一下评判一个算法一般都是从哪些角度来评判的.其次 2. 2.十大经典排序算法 2.1-冒泡排序 算法思想: 说到 示例代码: public static void main(String[] args) { int []num ={7,4,9,3

lovely__RR的博客 3349

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

十大排序算法总结

排序方法 最好时间复杂度 最坏时间复杂度 平均时间复杂度 辅助空间复杂度 稳定性 博客链接 直接插入排序 O(n)O(n)O(n) O(n2)O(n^{2})O(n2) O(n2)O(n^{2})O(n2) O(1)O(1)O(1) 稳定 插入排序算法 折半插入排序 O(n)O(n)O(n) O(n2)O(n^{2})O(n2) O(n2)O(n^{2})O(n2) O(1)O(1)O(1) 稳定 折半插入排序算法 直接选择排序 O(n2)O(n^{2})O(n2) O(n2)O(n...

大彤小忆的博客 3040

个人总结:十大经典排序算法的C语言实现

大家好,最近我在菜鸟教程上发现了一篇非常详细介绍排序算法的文章,它对各种经典的排序算法进行了深入讲解,包括冒泡排序、插入排序、选择排序、快速排序等等。阅读这篇文章不仅能够帮助初学者更好地理解排序算法的原理和实现方法,也能够帮助有经验的开发者选择适合实际应用的排序算法。冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Hill sort)归并排序(Merge Sort)快速排序(Quick Sort)

xiaobuding的博客 1672

算法——排序(十大经典排序算法)

十大经典排序算法的代码实现

helloworld1932的博客 1030

十大排序算法——计数排序

计数排序一. 计数排序介绍二. 计数排序基础版三. 计数排序改进版四. 优化最终版本_空间节省 一. 计数排序介绍 计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。它只能对整数进行排序。 算法分析 当输入的元素是n 个0到k之间的整数时,它的运行时间是 O(n + k)。计数排序不是比较排序,排序的速度快于任何比较排序算法。 由于用来计数的数组C的长度取

8434

十大经典排序算法的Java实现

它也是基于分治策略,但与归并排序不同,快速排序的核心在于分区(partitioning),快速排序占用的空间相对较低,在特点情况下的速度高于归并排序,有很多人说Java底层采用的是快速排序,这种说法有点浅显了,Java底层的排序会根据具体场景选择最优的排序算法。大顶堆保证的是根节点的数值最大,并不能保证叶子节点是有序的,它不是二叉搜索树,所以我们通过构建大顶堆,并不断地取出堆顶的数并放到数组尾部、不断地维护大顶堆,就可以实现升序排序了。时间复杂度为n+k,其中k为待排序数组中最大的数。

m0_63570394的博客 2169

python实现十大排序算法

算法和数据结构是程序员的必修课 前两篇博文我们分别用C++和Java实现了十大排序算法 C++实现十大排序算法 Java实现十大排序算法 现在我们用python来实现一下十大排序算法 具体代码可以访问我的GitHub地址获取 https://github.com/liuzuoping/Algorithms 1 冒泡排序 冒泡排序无疑是最为出名的排序算法之一,从序列的一端开始往另一端冒泡(你可以...

liuzuoping的博客 1541

算法基础-十大排序算法

十大排序算法 排序就是将一组对象按照某种逻辑顺序重新排列的过程。 冒泡排序、简单选择排序、简单插入排序、希尔排序、归并排序、堆排序、计数排序、桶排序、基数排序。 排序方法对比

备忘录 379

1.十大排序算法

十大排序算法的概览总结。

virgil 4222
上一篇: python控制台实现俄罗斯方块
下一篇: 基本排序算法 之一 ——冒泡排序
晨晚_
博客等级 码龄9年 10粉丝 17原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值