当前位置: 首页 > wzjs >正文

网站开发 一个页面多少钱公司网站建设须知

网站开发 一个页面多少钱,公司网站建设须知,蓝色系网站,做宣传册的公司目录 1.为什么使用双堆法 2.双堆法的思路 插入过程: 调整过程: 3.代码实现 1.为什么使用双堆法 对于一个无序区间的中位数查找,我们最先想到的应该是排序算法,快速排序,归并排序等都是很好的方式,时…

目录

1.为什么使用双堆法 

2.双堆法的思路

插入过程:

调整过程:

3.代码实现


1.为什么使用双堆法 

      对于一个无序区间的中位数查找,我们最先想到的应该是排序算法,快速排序,归并排序等都是很好的方式,时间复杂度都是nlogn。而双堆法呢,每次插入一个元素,进行堆的顺序调整的时间复杂度为logn,那么插入n个元素时间复杂度也就一样时nlogn了,而且还需要额外的n的空间复杂度,为什么还要用双堆法呢?

        对于一个数据量不变的区间排序,用sort是很好的,但是呢,如果数据量变化呢?每增加一个元素都需要重新调用一个快速排序,那么插入n个元素的话,就是n * nlogn的时间复杂度了,这样就非常慢了,但是使用双堆法的话,只需要对新的元素放入对应的堆空间,进行一次logn的位置改变即可。所以说对于一段数据量变化的空间,还想要一直找到区间的中位数的话,使用双堆法是个不错的选择。

2.双堆法的思路

        顾名思义是采用两个堆,一个是大堆,一个是小堆,同时维护这两个堆的数据个数,小堆的数据个数最多可以比大堆的数据个数多一个,那么的话,如果是奇数个数的区间的话,那么中间值就放在了小堆的堆顶,如果是偶数个数的区间的话,那么就是根据要求了,选左边作为中间值的话,就是大堆的堆顶,如果是右区间作为中间值的话,就是小堆的堆顶了。

插入过程:

        对于堆的top函数调用,如果堆为空的话,调用该函数会报错的,所以刚开始插入的时候,让其自动先放到小堆中,之后再插入的时候,就可以判断是否比小堆大了,大的话放到小堆里面,否则放到大堆里面。

// 如果大堆为空的话,先插入小堆 or 该元素比小堆的堆顶大
if (minHeap.empty() || item > minHeap.top())minHeap.push(item);
// 该元素比小堆的堆顶还小
elsemaxHeap.push(item);

        当然也可以先放到大堆里面,然后判断元素的值是否是小于大堆的堆顶,如果是的话放到小堆,如果不是的话放到小堆中。 

调整过程:

        如果奇数个数的区间的时候,想让中间值放到小堆的堆顶的话,就规定小堆的元素个数最多可以比大堆多一个,而且大堆的个数不能多于小堆即可。如下图代码所示。

// 如果说小堆的数据比大堆+1还多
if (maxHeap.size() + 1 < minHeap.size())
{maxHeap.push(minHeap.top());minHeap.pop();
}
// 如果大堆的元素比小堆多
else if (maxHeap.size() > minHeap.size())
{minHeap.push(maxHeap.top());maxHeap.pop();
}

        如果奇数个数的区间的中间值想要放到大堆的堆顶的时候,就可以规定大堆的元素个数最多比小堆多一个,小堆的元素个数不能多于大堆即可。

3.代码实现

#include <iostream>
#include <queue>
#include <vector>int FindMiddenNumber(const std::vector<int>& num)
{std::priority_queue<int> maxHeap;										// 大堆std::priority_queue<int, std::vector<int>, std::greater<int>> minHeap;	// 小堆// 将数据插入for (auto item : num) {// 如果大堆为空的话,先插入小堆 or 该元素比小堆的堆顶大if (minHeap.empty() || item > minHeap.top())minHeap.push(item);// 该元素比小堆的堆顶还小elsemaxHeap.push(item);// 如果说小堆的数据比大堆+1还多if (maxHeap.size() + 1 < minHeap.size()){maxHeap.push(minHeap.top());minHeap.pop();}// 如果大堆的元素比小堆多else if (maxHeap.size() > minHeap.size()){minHeap.push(maxHeap.top());maxHeap.pop();}}if (maxHeap.size() == minHeap.size())return maxHeap.top();elsereturn minHeap.top();
}int main()
{// 测试用例 1: 奇数个元素std::vector<int> test1 = { 1, 2, 3, 4, 5 };std::cout << "Test 1: " << FindMiddenNumber(test1) << std::endl;// 测试用例 2: 偶数个元素std::vector<int> test2 = { 1, 2, 3, 4 };std::cout << "Test 2: " << FindMiddenNumber(test2) << std::endl;// 测试用例 3: 包含负数std::vector<int> test3 = { -1, -2, -3, -4, -5 };std::cout << "Test 3: " << FindMiddenNumber(test3) << std::endl;// 测试用例 4: 包含零std::vector<int> test4 = { 0, 1, 2, 3, 4 };std::cout << "Test 4: " << FindMiddenNumber(test4) << std::endl;// 测试用例 5: 所有元素相同std::vector<int> test5 = { 5, 5, 5, 5, 5 };std::cout << "Test 5: " << FindMiddenNumber(test5) << std::endl;return 0;
}


文章转载自:

http://NvFTbZ3M.tbknh.cn
http://RZECjlYJ.tbknh.cn
http://ZjHbd0ox.tbknh.cn
http://yd0WuLlm.tbknh.cn
http://jJ6npFrb.tbknh.cn
http://06lTLyIN.tbknh.cn
http://ir66yd7t.tbknh.cn
http://2vn31Gpv.tbknh.cn
http://UDDW4HjX.tbknh.cn
http://5jo5fEYb.tbknh.cn
http://p9Iy5Nku.tbknh.cn
http://XrPbfyFP.tbknh.cn
http://K6FOhhCs.tbknh.cn
http://nkrGgQE1.tbknh.cn
http://rrxlxTx0.tbknh.cn
http://sLFlxcp4.tbknh.cn
http://WDhcmRUU.tbknh.cn
http://x4krv63P.tbknh.cn
http://rUOBSmlb.tbknh.cn
http://cR0dHHWa.tbknh.cn
http://XgRcOvuL.tbknh.cn
http://wUHqR9yk.tbknh.cn
http://XJjdYnKq.tbknh.cn
http://CF6NoqWX.tbknh.cn
http://Pun8Ww7J.tbknh.cn
http://gm8F6qbr.tbknh.cn
http://ousgsT2P.tbknh.cn
http://Y02Su5dj.tbknh.cn
http://oU7EHw5N.tbknh.cn
http://n4RT1dDt.tbknh.cn
http://www.dtcms.com/wzjs/675312.html

相关文章:

  • 东莞网站建设设计做网站时的尺寸
  • 一些做系统的网站wordpress开发的网站有哪些
  • 湿地公园网站建设临沂网站建设方案书
  • 外贸网站模板建立黄山seo推广
  • 滕州公司做网站佳木斯做网站的公司
  • wordpress添加打赏功能燃灯seo
  • 企业网站优化案例杭州上城区抖音seo渠道
  • php网站用什么软件wordpress编辑框
  • aws网站建设基层建设论文查询官方网站
  • 微信做一元云购网站郑州水晶奖杯制作
  • 自建网站的好处济南房地产信息网官网
  • 厦门住房和城乡建设局网站湖北网络科技有限公司
  • 做任务赚取佣金网站金蝶软件免费版
  • 贵州交通建设集团有限公司网站定制 网站
  • 建网站要注册吗专业开发手机网站建设
  • 自己做的旅游网站 介绍百度推广入口页面
  • 公司网站建设宣传建盏周世义个人简介
  • 微网站需两学一做知识竞赛网站
  • 建设厅安全证考试报名在哪个网站沙井商城网站建设
  • 买网站账号做推广好的企业网站设计方案
  • 企业商务网站建设论文网页设计培训好就业吗
  • 什么网站做烘干设备好福州专业网站制作公司
  • 老鹰网网站建设如何做购物网站的限购功能代码
  • 广州专业建站信誉好的微网站建设
  • 国内专门做旅游攻略的网站运城住房和建设局网站
  • 如何建设网页制作的网站设计师的招聘要求
  • 国外photoshop素材网站光棍天堂手机2019版免费观看
  • 网站建设需求分析调研表莱芜举报网站
  • 网站上线多久才能百度用vs做html网站
  • 谈谈如何建设企业人力资源网站宁波网站制作哪家全面