数据结构
大黄哥哥的博客
苏州大学一枚在校研究生
展开
-
按名次排序并原地重排
一个元素在序列当中的名次,例如{4,3,9,3,7},最左边出现的3 名次记成0,后面出现的3记1,从小到大从左到右可以将名次记为{2,0,4,1,3}。现在需要对于一组序列进行名次计算,并根据名次对于原序列重新进行排列。这次的方法使用的是原地重排法。原地重排法介绍:i是循环变量,r[i]存放的是a[i]数组里面的名次,当i!=r[i]时,将r[i]与r[r[i]]交换,对应的a[i]也进行交换,...原创 2018-05-03 15:09:22 · 841 阅读 · 0 评论 -
动态寻找数组的中位数
在寻找中位数这个过程中,可以使用2个二叉堆去实现,一个最大堆,一个最小堆,然后二者的对二者的top进行运算。具体见代码:void addnum(int num){ if(big_queue.empty()){ big_queue.push(num); } if(big_queue.size()==small_queue.size()) //首先判断2个堆的大小,分三...原创 2018-08-28 10:26:24 · 1042 阅读 · 0 评论 -
栈的压入、弹出(针对vector数组和队列不同 的使用方法)
针对vector和队列分别使用了2个代码,当然思想是一样的,但是操作起来有一点不太一样,其中vector不能使用pop_back,因为数组并没有delete,所以只能用遍历,但是队列可以只用用pop,所以这是二者之间最大的区别,如果题目没有要求,我建议用队列的方法,这样用起来比较方便,下面分别列举二者的代码:vector数组版:class Solution {public: b...原创 2018-08-28 12:17:31 · 2553 阅读 · 0 评论