直接选择排序、堆排序、冒泡排序

一、选择排序

基本思想:

每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完

1.1 直接选择排序:

在元素集合arrayi--arrayn - 1中选择关键码最大(小)的数据元素

若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中的最后一个(第一个)元素交换在剩余的arrayi--arrayn - 2(arrayi + 1--arrayn - 1)集合中,重复上述步骤,直到集合剩余1个元素

1.2直接选择排序的实现(以升序为例)

思路:定义两个指针,分别指向最左边和最右边,然后每次遍历选出最小的放左边,选出最大的放右边

1.3直接选择排序的特性总结:

  1. 直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用

  2. 时间复杂度:O(N^2)(无论最好还是最坏都是N^2)

  3. 空间复杂度:O(1)

  4. 稳定性:不稳定

1.4测试

1.5选择排序代码(升序)

2.堆排序

2.1堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。它是通过堆来进行选择数据。需要注意的是排升序要建大堆,排降序建小堆

2.2堆排序测试

2.3堆排序代码

直接选择排序(堆排序)的特性总结:

  1. 堆排序使用堆来选数,效率就高了很多。

  2. 时间复杂度:O(N * logN)

  3. 空间复杂度:O(1)

  4. 稳定性:不稳定

二、交换排序

基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动

1.冒泡排序

1.1冒泡排序测试

1.2冒泡排序代码

1.3冒泡排序的特性总结:

  1. 冒泡排序是一种非常容易理解的排序

  2. 时间复杂度:O(N^2)

  3. 空间复杂度:O(1)

  4. 稳定性:稳定

三种排序性能测试

相关推荐
JasmineX-14 分钟前
数据结构(笔记)——顺序栈
c语言·数据结构·笔记
2401_8628808210 分钟前
嵌入式Linux系统移植与驱动开发完整指南
linux·c语言·驱动开发
坤坤子吖20 分钟前
Linux 线程同步与互斥——互斥锁
linux·服务器·c++·笔记·学习
撩得Android一次心动22 分钟前
Jetpack Compose 知识点整理3【个人用】
android·笔记·学习·kotlin·android compose
威嵌神州1 小时前
国产化加固计算机项目选型笔记|板卡、整机、平板与定制模块评估要点
笔记·fpga开发·电脑
阿梦Anmory1 小时前
规划领域定义语言(PDDL)学习笔记
笔记·学习
开开心心就好1 小时前
白天晚上自动调蓝光,护眼工具亮度可调
服务器·开发语言·算法·pdf·ocr·intellij-idea·idea
绛橘色的日落(。・∀・)ノ1 小时前
C#学习笔记
笔记·学习·c#
ss2731 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 16 PostgreSQL子查询与嵌套查询(下)
数据库·笔记·postgresql
云水初2 小时前
【项目篇】基于LanGraph的自动处理客服邮件的 Agent汇总
开发语言·笔记·python·学习·fastapi·langgraph