- 博客(3)
- 收藏
- 关注
原创 【剑指offer】之最小的K个数-C++
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。题解利用最大堆(时间复杂度nlogk)来解决,维护一个包含4个元素的最大堆,首先取待处理数组的前k个元素构成最大堆,然后遍历数组的剩余元素,若当前元素比最大堆的堆顶(最大的元素)小,则将当前元素与最大堆的堆顶互换,再重新生成新的最大堆。遍历完所有元素后所得的最大...
2019-10-10 20:21:04 95
原创 【排序算法】之堆排序-C++
原理堆排序是借助数据结构–堆中的最大堆实现的。首先,将待排序序列抽象为二叉树,并构造出最大堆,然后依次将根节点元素(最大元素)与待排序序列的最后一个元素交换,每次交换后刷新最后一个元素的位置(自减1),直至其与首元素相交,即完成排序。代码不用algorithm库中已有的堆处理算法#include<vector>using namespace std;void downT...
2019-10-10 17:48:02 83
原创 【排序算法】之基数排序-C++
原理基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。代码版本1//取出数组中的最大值int getMaxValue(const vector<int> &arr){ int max = IN...
2019-10-09 16:41:08 269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人