数据结构 | 排序

插入排序


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

思路:

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

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

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


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

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


希尔排序(缩小增量法)


交换排序


冒泡排序


快速排序


选择排序


直接选择排序


归并排序

动图演示:


基数排序

总结


时间及空间复杂度

相关推荐
乌鸦9441 小时前
《数据结构之美--二叉树》
数据结构·#二叉树
泽02024 小时前
数据结构之排序
数据结构·算法·排序算法
Brookty4 小时前
【数据结构】二叉搜索树
数据结构
杜小暑5 小时前
数据结构之顺序表
c语言·数据结构
代码程序猿RIP6 小时前
【C语言干货】回调函数
c语言·开发语言·数据结构·c++·算法
刚入门的大一新生6 小时前
C++初阶-模板初阶
开发语言·数据结构·c++
知识漫步6 小时前
代码随想录算法训练营第60期第二十一天打卡
数据结构·算法
刃神太酷啦6 小时前
排序--数据结构初阶(4)(C/C++)
c语言·数据结构·c++·算法·leetcode·深度优先·广度优先
zl_dfq8 小时前
C++ 之 【list的简介、list 的构造函数、iterator、容量操作、元素访问、增删查改与迭代器失效】
数据结构·c++
Run_Teenage11 小时前
手撕——贪吃蛇小游戏(下)
c语言·数据结构·链表