十大排序算法——排序算法效率比较——选择排序、冒泡排序、选择排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

都2024年了,就不要看这种纯文字的教程了吧。一文包含十大排序算法。作者把算法原理和代码实现分为两个链接,如果想挑战一下自己的代码能力,可以选择只学习算法原理,代码完全由自己实现。

算法名称教程地址
选择排序选择排序算法原理
选择排序选择排序代码实现
冒泡排序冒泡排序算法原理
冒泡排序冒泡排序代码实现
插入排序插入排序算法原理
插入排序插入排序代码实现
希尔排序希尔排序算法原理
希尔排序希尔排序代码实现
归并排序归并排序算法原理
归并排序归并排序代码实现
快速排序快速排序算法原理
快速排序快速排序代码实现
堆排序堆排序算法原理
堆排序堆排序代码实现
计数排序计数排序算法原理
计数排序计数排序代码实现
桶排序桶排序算法原理
桶排序桶排序代码实现
基数排序基数排序算法原理
基数排序基数排序代码实现

最后,来看一下这十大排序算法在同样规模的随机数据的下的执行效率。
debug模式下:

CPU: intel i7-11700k
IDE: VS2022
debug mode
data size: 20000
bubble_sort: 3443ms
select_sort: 936ms
insert_sort_right_to_left: 1215ms

data size: 200000
shell_sort: 262ms
merge_sort: 99ms
quick_sort: 39ms
heap_sort: 116ms
heap_sort_by_queue: 108ms
count_sort: 5ms
bucket_sort: 109ms
multi_thread_bucket_sort: 42ms
radix_sort: 34ms
std::sort: 67ms
std::stable_sort: 54ms

release模式下:

CPU: intel i7-11700k
IDE: VS2022
release mode
data size: 20000
bubble_sort: 156ms
select_sort: 126ms
insert_sort_right_to_left: 50ms

data size: 200000
shell_sort: 19ms
merge_sort: 19ms
quick_sort: 11ms
heap_sort: 19ms
heap_sort_by_queue: 11ms
count_sort: 1ms
bucket_sort: 16ms
multi_thread_bucket_sort: 15ms
radix_sort: 5ms
std::sort: 12ms
std::stable_sort: 11ms

http://www.niftyadmin.cn/n/5297336.html

相关文章

迈向通用异常检测和理解:大规模视觉语言模型(GPT-4V)率先推出

PAPERCODEhttps://arxiv.org/pdf/2311.02782.pdfhttps://github.com/caoyunkang/GPT4V-for-Generic-Anomaly-Detection 图1 GPT-4V在多模态多任务异常检测中的综合评估 在这项研究中,我们在多模态异常检测的背景下对GPT-4V进行了全面评估。我们考虑了四种模式&#…

深入解析泛型

一、泛型的诞生 在C#1 中我们还没有泛型的时候我们收集数据通常需要使用到数组,或者使用封装好的数组集合Hashtable ArrayList。 举个例子: 我们在读取文件的时候就会需要一个数组来储存读取的数据的内容 但我们并不知数据的具体长度也就无法在声明的…

排序整形数组--------每日一题

大家好这是今年最后的一篇了,感谢大家的支持,新的一年我会更加努力地。 文章目录 目录 文章目录 题⽬描述: 输⼊10个整数,然后使⽤冒泡排序对数组内容进⾏升序排序,然后打印数组的内容 一、题目解读 冒泡排序是⼀种基础…

【Java】SpringBoot快速整合WebSocket实现客户端服务端相互推送信息

目录 什么是webSocket? webSocket可以用来做什么? WebSocket操作类 一:测试客户端向服务端推送消息 1.启动SpringBoot项目 2.打开网站 3.进行测试消息推送 4.后端进行查看测试结果 二:测试服务端向客户端推送消息 1.接口代码 2.使…

Hive表加工为知识图谱实体关系表标准化流程

文章目录 1 对源数据静态文件的加工1.1 分隔符的处理情况1.2 无法通过分隔符以及包围符区分字段1.3 数据中存在回车换行符 2 CSV文件导入Hive的建表2.1 包围符作用和功能2.2 Hive的建表导入2.3 数据文件导入 3 对Hive表中数据的清洗3.1 数据质量检查3.2 标准导图表的构建3.3 随…

20231231_小米音箱接入GPT

参考资料: GitHub - yihong0618/xiaogpt: Play ChatGPT and other LLM with Xiaomi AI Speaker *.设置运行脚本权限 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned *.配置小米音箱 ()pip install miservice_fork -i https://pypi.tuna.tsinghua.edu.cn/sim…

【Java】JUC并发编程(重量锁、轻量锁、偏向锁)

JUC并发编程 预备: 创建一个maven工程,导入lombok和logback的依赖。 1、基础概念 1、进程与线程 **进程:**程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU ,数…

微服务(7)

目录 31.Ribbon和Feign调用服务的区别? 32.什么是SpringCloud Bus? 33.什么是SpringCloud Config? 34.分布式配置中心有哪些框架? 35.分布式配置中心的作用? 31.Ribbon和Feign调用服务的区别? 调用方式同&am…