数据结构各种排序算法的温习

简介: 数据结构各种排序算法的温习

首先分门别类介绍各种算法的实现,最后汇总比较一下


排序算法


1.插入排序


直接插入排序

A[1…n],从i=2开始,一个一个找,找到A[i]在A[1…i-1]已排序好的位置排序

所以排n-1趟最好O(n),一般是O(n²)


折半插入排序

区别在于,找位置的时候用了二分法,但是注意查找快了,放入数据后的移动次数没有改变

所以还是O(n²)


希尔排序

区别在于每次分组进行直接插入排序,直到只分为一组。

时间复杂度可以突破o(n²)


2.交换排序


冒泡排序

左右交换比较,每次至少可以确定一个位置

时间复杂度O(n²)


快速排序

每次找一个基准,利用双指针法左右移动,找到基准位置,基准左右 大小分明。

时间复杂度O(nlg(n))


3.选择排序


直接选择排序

选好了放位置,比如A[1…i-1]排好了就从A[i…k]选一个放在第i个位置。

时间复杂度固定O(n²)


堆排序

堆排序一般用数组实现(从下标1开始),利用了完全二叉树的性质。

主要算法就是向上调整(插入)和向下调整(删除,建堆)

时间复杂度O(nlog(n))稳定


4.归并排序


二分法的应用。

主要是二分+归并,归并过程是双指针法的应用

o(nlog(n))


至于基数排序,不需要比较,只是分配收集,这里不想多说了

1685020039844.jpg

相关文章
|
20天前
|
存储 算法
【数据结构和算法】--- 二叉树(4)--二叉树链式结构的实现(2)
【数据结构和算法】--- 二叉树(4)--二叉树链式结构的实现(2)
14 0
|
20天前
|
存储 算法 Linux
【数据结构和算法】---二叉树(1)--树概念及结构
【数据结构和算法】---二叉树(1)--树概念及结构
14 0
|
20天前
|
存储 算法
【数据结构和算法】--队列的特殊结构-循环队列
【数据结构和算法】--队列的特殊结构-循环队列
12 0
|
9天前
|
机器学习/深度学习 存储 算法
【数据结构】算法的复杂度
算法的时间复杂度和空间复杂度
16 1
【数据结构】算法的复杂度
|
2天前
|
存储 算法 Python
“解锁Python高级数据结构新姿势:图的表示与遍历,让你的算法思维跃升新高度
【7月更文挑战第13天】Python中的图数据结构用于表示复杂关系,通过节点和边连接。常见的表示方法是邻接矩阵(适合稠密图)和邻接表(适合稀疏图)。图遍历包括DFS(深度优先搜索)和BFS(广度优先搜索):DFS深入探索分支,BFS逐层访问邻居。掌握这些技巧对优化算法和解决实际问题至关重要。**
9 1
|
20天前
|
算法 分布式数据库
【数据结构和算法】--- 二叉树(5)--二叉树OJ题
【数据结构和算法】--- 二叉树(5)--二叉树OJ题
12 1
|
7天前
|
算法 安全 调度
逆天改命!Python高级数据结构堆(Heap)与优先队列,让你的算法效率飙升至宇宙级!
【7月更文挑战第8天】Python的heapq模块和queue.PriorityQueue实现了堆和优先队列,提供高效算法解决方案。堆用于Dijkstra算法求解最短路径,例如在图论问题中;PriorityQueue则在多线程下载管理中确保高优先级任务优先执行。这两个数据结构提升效率,简化代码,是编程中的强大工具。
10 0
|
7天前
|
算法 搜索推荐 Java
在Java中实现高效的算法与数据结构
在Java中实现高效的算法与数据结构
|
17天前
|
存储 算法 调度
算法与数据结构-栈篇
算法与数据结构-栈篇
14 0
|
18天前
|
人工智能 算法
程序技术好文:算法与数据结构
程序技术好文:算法与数据结构