前言
本节课简单介绍了一些数据结构和算法的知识,并且列举了一些经典排序算法。
1.数据结构和算法
1.常见排序算法
- Python——timsort
- C++——introsort
- Rust——pdqsort
- Go——intorsort
- Go1.19排序算法速度比较快
2.Insertion Sort
- 方法:将元素不断插入已经排序好的数组中
- 特点
- 其实只有一个元素,其本身是一个有序的序列
- 后续元素插入有序序列中,即不断交换,直到找到第一个比其小的元素
-
时间复杂度
- best:O(n);avg:O(n^2);worst:O(n^2)
-
优点:最好情况时间复杂度为O(n)
-
缺点:平均和最坏情况的时间复杂度为O(n^2)
3.Quick Sort
-
方法:分治思想,不断分割序列直到序列整体有序
-
特点
- 选定一个轴点,用轴点分割序列
- 选定一个轴点,用轴点分割序列
-
时间复杂度
- best:O(n*logn);avg:O(n*logn);worst:O(n^2)
-
优点:平均情况时间复杂度为O(n*logn)
-
缺点:最坏情况的时间复杂度为O(n^2)
4.Heap Sort
-
方法:利用堆的性质形成的排序算法
-
特点
- 构造一个大顶堆
- 将根节点交换到最后一个位置,调整整个堆
-
时间复杂度
- best:O(n*logn);avg:O(n*logn);worst:O(n*logn)
-
优点:最坏情况时间复杂度为O(n*logn)
-
缺点:最好情况的时间复杂度为O(n*logn)