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

【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

强化学习Q值迭代的几何视角:从策略区域到快速收敛

在强化学习中,Q值迭代是求解最优策略的核心算法,其理论基础建立在贝尔曼不动点定理之上。该算法通过迭代更新Q函数,使其逐步逼近最优值函数。从几何视角看,整个Q函数空间可被视为一个高维流形,每个Q函数对应流形上的一个点,而贝尔曼最优算子则定义了流形上的变换轨迹。理解这一几何结构,特别是由策略超平面划分出的凸多面体区域,对于分析算法的收敛行为至关重要。在实际工程中,传统Q值迭代可能在高维或稀疏奖励环境下收敛缓慢,甚至陷入策略高原。通过引入策略区域缓存与自适应学习率等几何启发方法,可以更高效地导航策略空间,加速策略

weixin_30444111的博客 319

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

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

261

GitHub工业级开源利器:StreamPipes如何简化工业物联网数据分析

Apache StreamPipes是一款GitHub上的工业级开源利器,旨在简化工业物联网数据分析。它通过图形化界面连接各类工业协议数据源,以拖拽方式构建流处理管道,并实现实时可视化,有效降低了数据分析的技术门槛,让业务人员也能自助完成从数据接入到洞察的全流程。

weixin_29279153的博客 185

基于Mind+、MOTT实现人工智能

@基于Mind+、MOTT实现人工智能 人工智能实验 一、实验目的及要求 【一】实现人脸识别 【二】实现云数据库应用 【三】实现测温数据mqtt上传至物联网云平台 二、实验原理与内容 基于二哈实现多人人脸学习和识别 基于TinywebDB实现云数据库应用 基于EasyIoT实现mqtt数据上传。 三、实验软硬件环境 硬件:掌控板 软件:Mind+ 四、实验过程(实验步骤、记录、数据、分析) 1.基于二哈实现多人人脸学习和识别 ①在Mind+扩展上的传感器选项选择HUSKYLENS AI 摄像头 ②配置哈士

weixin_44606930的博客 2376

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

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

qiminixi的专栏 1827

Agent框架系列:1-低代码智能体平台深度解析Dify、Coze、n8n

Dify、Coze 和 n8n 是三大主流低代码智能体平台,各有侧重。Dify 适合企业级 AI 应用,具备强大的 RAG 和知识库管理能力,技术栈为 Python + React。Coze 由字节推出,主打零代码和快速原型开发,集成 60+ 插件,极适合非技术用户。n8n 以工作流自动化和系统集成为核心,支持 400+ 外部应用,基于 Node.js + Vue,扩展性极强。选择建议:非技术团队选 Coze,AI 应用选 Dify,复杂自动化与集成选 n8n。可根据实际需求混合使用,最大化平台优势。

3086

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

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

weixin_43441742的博客 2134

基于深度学习的图像识别技术在农业领域中的应用

是识别"病害种类"还是"病害严重度分级"?前者是分类,后者常需分割或分级回归。是叶片级(离体叶片图像)、植株级(田间单株)、地块级(无人机俯拍)?视角不同,模型差异巨大。实时无人机巡检可能要求 < 50 ms/帧(Jetson Orin),而离线测报可接受秒级推理。类别标签、结构化 JSON、GIS 图斑、报警事件?

AI天才研究院 2171

OpenClaw用户必看:每天0成本使用OpenClaw!NVIDIA NIM免费大模型接入教程

🚀 OpenClaw接入NVIDIA NIM免费API!glm5、minimax-m2.5等大量模型任选,0成本升级AI助手!💰

XiaoqiangClub的博客 5579

十大经典排序算法(上)

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

weixin_68773927的博客 2万+

高通SDX12:ProSLIC Si32185移植调试

高通 SDX12 语音芯片slic 音频驱动 Si32185

不秃头的程序猿Gabriel的博客 2038

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

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

果冻の技术星球 1万+

小众但实用:Python爬取钉钉/企业微信消息,实现办公数据自动化采集(完整版)

钉钉/企业微信的办公数据自动化采集,属于「小众但极度实用」的Python技巧——它不像爬虫爬取电商/网页数据那样被广泛关注,但能直接解决职场人的「刚需痛点」,把每天1-2小时的手动数据整理工作,变成「一键自动化完成」。这套技巧的核心价值,不在于「技术有多高深」,而在于「能真正落地、能真正提升效率」—— 几行简单的Python代码,就能解放双手,让你从繁琐的重复工作中解脱出来,专注于更有价值的核心工作。更重要的是:所有的技术和代码,都是基于「合规合法」的前提,守住了技术的底线,也守住了职场的原则。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1931

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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

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

weixin_56781779的博客 7037

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

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

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

十大排序算法总结

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

余额充值