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

【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

AD9361 FIR 滤波器设计

matlab 得到滤波器系数

weixin_44630490的博客 1万+

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

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

261

告别Python依赖!用C++编译PaddleOCR打造轻量级本地OCR工具(附模型选择与性能对比)

本文详细介绍了如何将PaddleOCR从Python迁移到C++平台,打造高性能、低资源占用的本地OCR工具。通过对比Python和C++实现的性能差异,展示了C++在冷启动时间、内存占用和部署便捷性上的显著优势。文章还提供了模型选择、编译配置和优化技巧等实用指南,帮助开发者轻松构建轻量级OCR解决方案。

weixin_28717467的博客 256

多路输出电源的交叉调整率:从理论到无源优化实践

本文深入探讨了多路输出电源中的交叉调整率问题,分析了其物理根源及无源优化方法。通过漏感与耦合的理论分析,结合加权反馈、电感耦合等五种无源优化技术,帮助工程师有效解决交叉调整率挑战。文章还以TDK-Lambda CUT75系列为例,展示了优化技术的实际应用与效果。

weixin_26886855的博客 280

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

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

qiminixi的专栏 1827

Git GUI学习教程

学习宗旨:快速应用,不易忘记 很遗憾,申请Git的专栏未审批,那我就不再写专栏了,把最近的学习心得写一下,我也是在学习中进行,有任何问题直接留言,回复交流,我还采用思路+实践模式快速过。 目录 1、Git是什么 2、远程仓库 1)GitHub: 2)Gitee(码云): 3、安装Git(Windows) 1)下载 ...

Alexantao 的专栏 7252

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

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

weixin_43441742的博客 2134

从零开始之stm32之CAN通信

CAN通信极简教程(小白友好版),从小白的视角了解并实现简单的STM32F103的CAN通信,直接上手。

qq_30993593的博客 1306

新手工程师必看:搞定EMI传导干扰,从理解差模和共模开始(附实战案例)

本文深入解析EMI传导干扰中的差模与共模问题,为新手工程师提供从诊断到治理的完整方法论。通过实战案例展示如何通过频谱分析、近场探头扫描等技术精准定位干扰源,并分享PCB布局、滤波器设计等系统级解决方案,帮助工程师高效解决传导干扰问题,提升EMC设计能力。

weixin_26757925的博客 472

十大经典排序算法(上)

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

weixin_68773927的博客 2万+

吃透工业通信:C#工控机实现Modbus、OPC UA、Profinet、EtherCAT协议全适配

本文介绍了基于C#的工业通信协议全适配方案,采用分层架构设计实现Modbus、OPC UA、Profinet和EtherCAT四种主流协议的统一管理。核心包括:1)三层架构(应用层、抽象层、协议层)降低耦合;2)定义统一通信接口IIndustrialCommunication;3)工厂模式创建不同协议实例;4)以Modbus TCP为例展示具体实现。该方案经过实际项目验证,可简化多协议设备管理,提升工业自动化系统的开发效率。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 722

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

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

果冻の技术星球 1万+

AMBA-CHI协议详解(二)

读事务,写事务,原子事务,Stash事务,Dataless事务,DVM事务,Retry事务。

Crazzy_M的博客 6652

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

weixin_56781779的博客 7037

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

目录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

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

十大排序算法总结

排序方法 最好时间复杂度 最坏时间复杂度 平均时间复杂度 辅助空间复杂度 稳定性 博客链接 直接插入排序 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、付费专栏及课程。

余额充值