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

陕西华伟建设有限公司网站外贸功能网站建设

陕西华伟建设有限公司网站,外贸功能网站建设,查域名是否注册,网站建设 毕业设计本文以大根堆为例&#xff0c;用数组实现&#xff0c;它的nums[0]是数组最大值。 时间复杂度分析&#xff1a; 建堆o(n) 插入删除o(logn) 堆排序O(nlogn) 首先上代码 #include<bits/stdc.h>using namespace std; void down(vector<int>&nums, int idx, i…

本文以大根堆为例,用数组实现,它的nums[0]是数组最大值。

时间复杂度分析:

建堆o(n)

插入删除o(logn)

堆排序O(nlogn)

首先上代码

#include<bits/stdc++.h>using namespace std;
void down(vector<int>&nums, int idx, int n)
{//删除时和由数组创建堆时用到int leftidx = 2 * idx + 1;int rightidx = 2 * idx + 2;if (leftidx >= n && rightidx >= n)return;if (rightidx >= n && nums[idx] >= nums[leftidx])return;if (rightidx < n&&nums[idx] >= nums[leftidx] && nums[idx] >= nums[rightidx])return;if (rightidx >= n || nums[leftidx] >= nums[rightidx]){swap(nums[idx], nums[leftidx]);down(nums, leftidx, n);}else{swap(nums[idx], nums[rightidx]);down(nums, rightidx, n);}
}void up(vector<int>&nums, int idx)
{//上滤操作由插入元素时用到,此处使用vector动态数组,不考虑静态数组插入元素过多导致过界拷贝扩容问题。int faridx = (idx - 1) / 2;if (idx == 0 || nums[idx] <= nums[faridx])return;swap(nums[idx], nums[faridx]);up(nums, faridx);
}void heapfy(vector<int>&nums)
{int n = nums.size();for (int i = n - 1; i >= 0; --i){if (2 * i + 1 <= n - 1)down(nums, i,n);}}void heapinsert(vector<int>&nums,int val)
{nums.emplace_back(val);int n = nums.size();up(nums, n - 1);
}void heapdel(vector<int>&nums)
{int n = nums.size();nums[0] = nums[n - 1];nums.pop_back();--n;down(nums, 0, n - 1);
}
void heapsort(vector<int>&nums)
{int n = nums.size();while (n> 1){swap(nums[0], nums[n - 1]);down(nums, 0, n-1);--n;}
}int main()
{vector<int>nums = { 2,1,4,6,5,8,0,7};heapfy(nums);for (auto& num : nums)cout << num <<" ";cout << "建队完成"<<endl;heapinsert(nums, 9);for (auto& num : nums)cout << num << " ";cout << "插入完成"<<endl;heapdel(nums);for (auto& num : nums)cout << num << " ";cout << "删除完成"<<endl;heapsort(nums);for (auto& num : nums)cout << num << " ";cout << "排序完成,堆结构已破坏" << endl;
}

读者可以复制代码到编译器里运行一下试试,帮助理解

它的主要思路参考力扣官方讲解

LeetCode 力扣官方分享 | 最大堆的基本内容和堆排序 - 知乎 (zhihu.com)

http://www.yayakq.cn/news/831350/

相关文章:

  • 怎么做挖矿网站网站制作 广州
  • 物流网站怎么做网站后台上传模板
  • 程序员做任务的网站东莞网页设计报价
  • 网站开发的背景知识与相关技术潢川城乡建设局网站
  • 建设银行档案管理网站原创网站设计
  • 网站建站常见问题常熟苏州网站建设
  • 网站建设标志设计世界500强企业使命愿景价值观
  • wordpress 4.5.7百度seo外链推广教程
  • 网站开发分销系统网站开发恶意索赔
  • 运营网站白云网站开发
  • 网站建设课程教学改革广告设计与制作属于什么专业类别
  • 咸宁网站seo排名custom post type wordpress
  • 广东省建设行业数据开放平台湖南有实力的关键词优化
  • 网站怎么做背景不变页面滑动建立网站编程
  • 有没有专门做采购的网站做复刻衣服买网站
  • 云尚网络建站前端和做网站
  • 网站备案是先做网站还是做完了备案h5用什么网站来做
  • 查询网站备案顺义区专业网站制作网站建设
  • wordpress 插件站苏州小程序开发公司哪家好
  • 网站建设 镇江万达新郑整站优化
  • 网站站内搜索制作手机软件开发工具
  • 英文淘宝网站建设成都全网营销型网站
  • 北京网站建设网页设计网站尾部一般怎么做
  • 蒲城矿建设备制造厂网站免费网站空间免备案
  • 哪个网站可以做验证码兼职山东网架公司
  • 网站制作公司报价如何给网站数据备份
  • 家居类企业响应式网站网站做任务包括什么
  • 斗门区建设局网站茂名网站制作公司
  • 有ip怎么用自己的主机做网站商标注册网上申请流程25个步骤
  • 做网站资源知乎江阴建设局网站招考