算法导论基础-几种排序算法总结
算法 | 最坏情况运行时间 | 平均情况/期望运行时间 |
---|---|---|
插入排序 | Θ(n²) | Θ(n²) |
归并排序 | Θ(nlgn) | Θ(nlgn) |
堆排序 | Θ(nlgn) | —— |
快速排序 | Θ(n²) | Θ(nlgn) |
计数排序 | Θ(n+k) | Θ(n+k) |
基数排序 | Θ(d(n+k)) | Θ(d(n+k)) |
桶排序 | Θ(n²) | Θ(n) |
1 插入排序算法
插入排序示意图:
演示C代码:
1 | void insertionSort(int a[], int n) { |
2 归并排序算法(分治法)
归并排序图示:
演示C代码:
1 | void mergeSort(int a[], int n) { |
3 堆排序(二叉树)
建堆图示:
堆排序图示:
演示C代码:
1 | void heapSort(int a[], int n) { |
4 计数排序
计数排序图示:
演示C代码:
1 | void countingSort(int a[], int n) { |
5 基于计数排序的基数排序
基数排序图示:
演示C代码:
1 | void radixSort(int a[], int n) { |
6 桶排序
桶排序图示:
演示C代码:
1 | void bucketSort(int arr[], int n) { |
7 快速排序
快速排序图示:
演示C代码:
1 | void swap(int *a, int *b) { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Sunshine's blog!
评论