数据结构 | 排序

插入排序


直接插入排序(空间复杂度为1,排序后稳定)

思路:

在待排序的元素中,假设前n-1个元素已有序,现将第n个元素插入到前面已经排好的序列中,使得前n个元素有序。按照此法对所有元素进行插入,直到整个序列有序。

  但我们并不能确定待排元素中究竟哪一部分是有序的,所以我们一开始只能认为第一个元素是有序的,依次将其后面的元素插入到这个有序序列中来,直到整个序列有序为止。

时间复杂度:最坏情况下为O(N*N),此时待排序列为逆序,或者说接近逆序
      最好情况下为O(N),此时待排序列为升序,或者说接近升序。
空间复杂度:O(1)


折半查找(数列应该有顺序)

时间复杂度(减少比较次数,而记录移动的次数不变)


希尔排序(缩小增量法)


交换排序


冒泡排序


快速排序


选择排序


直接选择排序


归并排序

动图演示:


基数排序

总结


时间及空间复杂度

相关推荐
wuyk555几秒前
4.树:一对多的层次数据结构
开发语言·数据结构·stm32·单片机
en.en..4 小时前
数据结构考点解析:逻辑闭环与存储循环辨析
数据结构
布莱克6056 小时前
数据库索引分类:数据结构、物理存储与逻辑角度详解
数据结构·数据库
Fa_Mian_Tuan7 小时前
图论基础|邻接矩阵超详细讲解(含无向/有向/带权图+完整可运行C语言代码)
c语言·数据结构·笔记·算法·图论
小星星闪亮登场9 小时前
ST表--倍增思想
开发语言·数据结构·c++·算法·思维
xiaohebang10 小时前
流失预测模型设计:行为特征分析算法选型
大数据·数据结构·经验分享
sunoo-22910 小时前
数据结构入门 Day3:双向链表与双向循环链表全解析(核心操作 + 易错坑点 + 三类链表对比)
linux·开发语言·数据结构·笔记·学习·链表
祖力5512 小时前
快速学会数据结构中的链式队列与循环队列
linux·c语言·数据结构·算法
布莱克60513 小时前
理解B+树:原理、特性与应用场景
数据结构·数据库·mysql
晚风叙码15 小时前
C++哈希表实现:开放定址法和链地址法 (哈希桶)
数据结构·c++·哈希算法·散列表