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

加盟推广公司如何优化网站推广

加盟推广公司,如何优化网站推广,wordpress上传限制,有哪些网站主页做的比较好看堆排序的基本步骤:(以从大到小的顺序排序为例) 1.构建大顶堆(每个结点的值都大于或等于其左右孩子结点的值) 2.排序:每次堆顶的元素取出来(整个堆中值最大),与最后一个…

堆排序的基本步骤:(以从大到小的顺序排序为例)

1.构建大顶堆(每个结点的值都大于或等于其左右孩子结点的值

2.排序:每次堆顶的元素取出来(整个堆中值最大),与最后一个节点做交换,使末尾元素最大

3.交换完之后,需要重新维护堆中剩下的其他节点,保证每次的堆顶都是最大值,重复2,3,直到序列完全有序

Code:

//维护堆的性质
//大顶堆:父节点的左右孩子都比父节点小
//小顶堆:父节点的左右孩子都比父节点大
void heapify(vector<int>& nums, int n, int i)
{int large = i;//保存父节点int left = 2 * i + 1;//左孩子int right = 2 * i + 2;//右孩子//判断左孩子是否比父节点大? 大的话,就更新父节点的下标if (left<n && nums[left]>nums[large])large = left;//判断右孩子是否比父节点大? 大的话,就更新父节点的下标if (right<n && nums[right]>nums[large])large = right;//到此,已经找到了当前父节点和其左右孩子中最大的节点的下标//判断父节点的下标是否发生变化,如果不相等,说明左右孩子中有比父节点大的if (large != i){//交换节点,维护大顶堆swap(nums[large], nums[i]);//继续维护剩下的节点heapify(nums, n, large);}
}
void heapsort(vector<int>& nums, int n)
{//建堆:从最后一个有孩子的父节点开始建立//这里为什么是i = n / 2 - 1? 因为左孩子的下标可以表示为2*i+1,此时最后一个孩子的下标为n-1//推导过来,找到最后一个有孩子的父节点的下标为n / 2 - 1for (int i = n / 2 - 1; i >= 0; i--){heapify(nums, n, i);}//排序:将大顶堆的顶与最后一个叶子节点进行交换,也就是每次找到当前堆中最大的元素,放在数组的最后面for (int i = n - 1; i > 0; i--){//交换swap(nums[i], nums[0]);//继续维护大顶堆中剩下节点,要始终保持是大顶堆的顺序heapify(nums, i, 0);}
}
int main()
{int n;cin >> n;vector<int> nums(n);for (int i = 0; i < n; i++){cin >> nums[i];}heapsort(nums, n);cout << "按升序顺序排序" << endl;for (auto& i : nums){cout << i << " ";}return 0;
}

这里如果要按照从小到大的顺序进行堆排序的话,只需要将维护堆的函数中if判断条件做一点小改动即可。

void heapify(vector<int>& nums, int n, int i)
{int small = i;//保存父节点int left = 2 * i + 1;//左孩子int right = 2 * i + 2;//右孩子if (left<n && nums[left]<nums[small])small = left;if (right<n && nums[right]>nums[small])small = right;//判断父节点的下标是否发生变化,if (small != i){//交换节点,维护大顶堆swap(nums[small], nums[i]);//继续维护剩下的节点heapify(nums, n, small);}
}

堆排序是不稳定的排序算法。

堆排序的时间复杂度:O(nlogn) 

http://www.yidumall.com/news/97782.html

相关文章:

  • 在线聊天网站怎么做搜索引擎排名竞价
  • 长沙做网站的搜索引擎优化实验报告
  • 网做 网站有哪些aso安卓优化
  • 奉贤做网站制作杭州网站建设技术支持
  • 百度网盘怎样做网站发布悬赏任务的推广平台
  • 兼职网站编辑怎么做百度关键词点击价格查询
  • 做网站一定要会ps么如何提高网站的自然排名
  • 内网域名谷歌广告优化师
  • 图片上加语音 网站开发个人网页制作完整教程
  • 如何做游戏推广网站石家庄seo排名公司
  • 做网站全屏尺寸是多少网页设计欣赏
  • 自己做的网站如何上传文件全国疫情防控最新数据
  • wordpress开cdn朝阳区seo搜索引擎优化怎么样
  • vs如何做网站百度免费广告发布平台
  • 程序员帮人做黑彩网站免费外链发布
  • 免费发广告帖子的网站重庆seo研究中心
  • 公司网站建设宣传公司网络营销平台有哪些?
  • 德州网站有哪些seo公司上海
  • 民权网站建设seo 服务
  • 网站不能访问如何做冗余seo网络排名优化哪家好
  • wordpress悬浮 联系大冶seo网站优化排名推荐
  • wordpress直接上传视频网站吗seo网站优化培训班
  • 网站设计联系电话环球网
  • 怎么做网站上的销售代四川餐饮培训学校排名
  • 重庆网站建设优化全国新冠疫情最新情况
  • 占酷设计网站官网入口百度竞价推广计划
  • 企业邮箱在哪查看合肥seo整站优化网站
  • 设计网站客户体验市场推广策略
  • 淄博网站建设找李光明比较靠谱的电商培训机构
  • 湖南响应式网站建设费用友情视频