数据结构
文章平均质量分 78
i96jie
这个作者很懒,什么都没留下…
展开
-
堆排序
算法整体思路: 1、将长度为n的数组构造成一个大顶堆。 2、将堆顶元素与尾节点交换,并将其输出,得到最大元素,放于数组尾部。 3、将剩余的n-1个节点重新构造为大顶堆。 4、重复2、3,直到数组排序完成。 堆排序的基本特征: 时间复杂度:O(nlogn) 空间复杂度:O(1) 堆的建立: 堆可以看成是一颗完全二叉树, 当每个节点都大于等于它的两个子节点时,就称为大顶...原创 2018-11-16 10:39:36 · 165 阅读 · 0 评论 -
快速排序的实现以及复杂度分析
步骤: 指定数组中的一个数作为基准元素,找到并将它放到排序完成后它所在的位置,也就是它前面的都比它小,后面的都比它大。 讲数组以它为界,分为两个子数组,重复上面的步骤,直到排序完成。 举个栗子: 这里用到的是填坑法。 在这里将制定的数定为数组中最后的一个数。 3 8 5 6 0 2 4 1 9 7 指定为7,并将...原创 2018-11-19 22:27:12 · 2870 阅读 · 0 评论 -
归并排序
void merge(vector<int>& v, int s, int mid, int e) { int i = mid + 1; int j = s; vector<int> tmp; while (s <= mid && i <= e) { if (v[s] <= v[i]) { tmp.push...原创 2019-09-03 10:51:01 · 71 阅读 · 0 评论