数据结构 | 排序

插入排序


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

思路:

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

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

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


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

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


希尔排序(缩小增量法)


交换排序


冒泡排序


快速排序


选择排序


直接选择排序


归并排序

动图演示:


基数排序

总结


时间及空间复杂度

相关推荐
长安er30 分钟前
LeetCode876/141/142/143 快慢指针应用:链表中间 / 环形 / 重排问题
数据结构·算法·leetcode·链表·双指针·环形链表
workflower1 小时前
PostgreSQL 数据库的典型操作
数据结构·数据库·oracle·数据库开发·时序数据库
仰泳的熊猫1 小时前
1140 Look-and-say Sequence
数据结构·c++·算法·pat考试
EXtreme351 小时前
栈与队列的“跨界”对话:如何用双队列完美模拟栈的LIFO特性?
c语言·数据结构·leetcode·双队列模拟栈·算法思维
松涛和鸣2 小时前
29、Linux进程核心概念与编程实战:fork/getpid全解析
linux·运维·服务器·网络·数据结构·哈希算法
hweiyu002 小时前
数据结构:有向图
数据结构
呱呱巨基2 小时前
C++ 红黑树
数据结构·c++·笔记·学习
不穿格子的程序员2 小时前
从零开始写算法——链表篇:相交链表 + 反转链表
数据结构·算法·链表
仰泳的熊猫2 小时前
1132 Cut Integer
数据结构·c++·算法·pat考试
拼好饭和她皆失2 小时前
高效算法的秘诀:滑动窗口(尺取法)全解析
数据结构·算法·滑动窗口·尺取法