![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
mingogo乔
这个作者很懒,什么都没留下…
展开
-
十大排序算法对比和C++实现
十大排序算法复杂度对比和C++实现一、性能对比二、基本的排序算法实现1. 插入排序2. 选择排序3. 冒泡排序三、高效的排序算法实现1. 希尔排序2. 堆排序3. 快速排序4. 归并排序5. 基数排序6. 计数排序 一、性能对比 算法 平均时间复杂度 最好情况 最坏情况 稳定性 优点 缺点 插入排序 O(n2)O(n^2)O(n2) O(n)O(n)O(n) O(n2)O(n^2)O(n2) 稳定 比较次数少;适用于基本有序的数列 交换次数多,插入成本大 选择排序 O(n2)O(n^2)原创 2021-09-12 17:23:55 · 184 阅读 · 0 评论 -
快速排序算法的C++实现
template<class T> void swap(T data[], int a, int b){ T temp = data[a]; data[a] = data[b]; data[b] = temp; } void quicksort(T data[], int first, int last){ int lower = first+1, upper = last;//双指针 //选择中间的数字放在第一个作为bound swap(data,first,(first+la原创 2021-05-29 19:06:27 · 119 阅读 · 0 评论 -
希尔排序算法的C++实现
前情知识: 增量序列的构建:h(i) = 3h(i-1) +1 第k个子序列中第i个位置,对应总数列中第i*h+(k-1) template<class T> void ShellSort(T data[], int size){ // 构建子序列间的间隔序列h(增量) int H[]; for(int h = 1,i=0; h < size; i++){ H[i] = h; h = 3*h+1; } for(i--;i>=0;i--){ h = H[i]原创 2021-05-29 17:24:05 · 102 阅读 · 0 评论 -
堆排序算法的C++实现
1. 对第i个父节点进行堆排序,条件:当前父节点下面层的所有非叶子节点都已完成堆排序 前情知识:使用数列表示树,对于第i个数, 它的根节点为 parent = (i-1)/2,取整 两个子节点分别为 2i+1 和 2i+2 template<class T> void swap(T data[], int a, int b){ T temp = data[a]; data[a] = data[b]; data[b] = temp; } void heapify(T data[], int原创 2021-05-28 22:45:16 · 80 阅读 · 0 评论