各种排序方法及代码实现

各种排序方法-(快排、插入、希尔、冒泡…)

这篇文章主要就是记录各种排序方法的具体实现及代码实现
里面的图片来自王道考研408计算机课程中。

插入排序

1.具体方法:
各种排序方法及代码实现_第1张图片
2.代码实现:
各种排序方法及代码实现_第2张图片
3.性能:
空间复杂度:O(1)
时间复杂度:最好O(n)[原本序列就是有序的];最坏O(n^2)[原本序列是逆序];
平均O(n^2);

希尔排序

1.方法
各种排序方法及代码实现_第3张图片
2.代码实现
各种排序方法及代码实现_第4张图片
3.性能
最坏时间复杂度O(n^2);
当n在某个范围内的时候,可以达到O(n^1.3)
确切的时间复杂度现在还不能具体证明
总结:不是稳定算法,仅可用于顺序表

冒泡排序

1.具体方法:
各种排序方法及代码实现_第5张图片
2.具体代码
各种排序方法及代码实现_第6张图片
3.性能
空间复杂度O(1)
最好情况(有序):O(n)
最坏情况(逆序):O(n^2)
平均时间复杂度:O(n^2)

快速排序

1.方法:
各种排序方法及代码实现_第7张图片
2.代码实现:
各种排序方法及代码实现_第8张图片
3.性能:
时间复杂度=O(n*递归层数)
最好时间复杂度=O(nlog2(n))
最坏时间复杂度=O(n^2)

空间复杂度=O(递归层数)
最好空间复杂度=O(log2(n))
最坏空间复杂度=O(n)

平均之间复杂度=O(nlog2(n))

稳定性:不稳定

简单选择排序

1.方法:
各种排序方法及代码实现_第9张图片
2.代码实现:
各种排序方法及代码实现_第10张图片
3.性能:
空间复杂度=O(1)
空间复杂度=O(n^2)
稳定性:不稳定
顺序表和链表都可以使用

堆排序

1.建立大根堆
各种排序方法及代码实现_第11张图片
1.1 建立大根堆的代码实现
各种排序方法及代码实现_第12张图片
1.2 基于大根堆的排序
各种排序方法及代码实现_第13张图片
1.3 代码实现
各种排序方法及代码实现_第14张图片
1.3.1 代码实现
各种排序方法及代码实现_第15张图片
1.4 性能分析
时间复杂度 = O(n)+O(nlog2(n)) = O(nlog2(n))
空间复杂度 = O(1)
稳定性:不稳定

归并排序

1.方法
各种排序方法及代码实现_第16张图片
1.2.1 代码实现1
各种排序方法及代码实现_第17张图片
1.2.2 代码实现2
各种排序方法及代码实现_第18张图片
1.3 算法性能
时间复杂度 = O(nlog2(n));
空间复杂度 = O(n).
稳定性:稳定的

你可能感兴趣的:(C/C++,排序算法,算法)