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

彩票创建网站搭建安装wordpress教程

彩票创建网站,搭建安装wordpress教程,网站自适应怎么做,辽宁建筑网之前学习了堆#xff0c;堆的一棵以顺序结构存储的完全二叉树#xff0c;堆本身又氛围大根堆和小根堆#xff0c;假设以大根堆为例#xff0c;由于堆顶部元素是一棵二叉树里面最大的元素#xff0c;所以如果每次都取堆顶的元素#xff0c;那么取出的元素就是一个降序排列…  之前学习了堆堆的一棵以顺序结构存储的完全二叉树堆本身又氛围大根堆和小根堆假设以大根堆为例由于堆顶部元素是一棵二叉树里面最大的元素所以如果每次都取堆顶的元素那么取出的元素就是一个降序排列的序列。至此我们发现了一个堆的特别重要的一个应用就是堆排序。 目录 1  问题解析 2  算法分析 3  代码  4  时空复杂度分析 1 时间复杂度 2 空间复杂度 1  问题解析 堆排序顾名思义就是用堆结构来实现对一个数组的排序但是在排序过程中是不能使用堆这个数据结构的。如有一个数组 a[] {2, 4, 10, 9,  2,  3}通过堆排序这个排序算法之后数组 a 里面的数据变为了 a[] {2, 2, 3, 4, 9, 10} 升序排列或者是 a[]  {10, 9, 4, 3, 2, 2} 降序排列。 2  算法分析 该算法共分为两步 1 首先对于给定的一个数组数组里面的数据都是乱序的既然是堆排序我们就需要先让该数组里面的数据变成一个堆将数组中的数据变成一个堆的算法为(这里是建大堆建小队逻辑类似)   这里利用的是向下调整算法因为向下调整算法的时间效率是比向上调整算法的时间效率高的上一篇文章有所讲解而向下调整算法又需要其左右子树各自都是一个堆所以首先选择最后一个节点作为孩子节点让其父亲向下调整这样最后一棵子树就变成了一个堆然后再以当前孩子节点的上一个节点作为下一个孩子节点让其父亲向下调整直至所有的子树都被调整为了一个堆。该过程如图所示 其本质就是从最小的一个子树建堆然后使子树规模依次扩大最后扩大为整棵树。 2数组建完堆之后由于堆顶数据总是最大的所以我们选择让堆顶数据和最后一个节点的数据进行交换这样最后一个数据就是有序的然后让交换后的堆顶数据再向下建堆但是注意这次建堆的范围应是 n - 1 个数据n 为数组中数据的个数那么当前我们执行完 n - 1 次该操作之后最大的 n - 1 个数据就会被升序的放到后 n - 1 个位置所以就实现了升序排列。该算法如图所示 通过理解该算法如果要排升序的话那么应该建大堆排降序的话应该建小堆。 3  代码  //升序的话建大堆降序的话建小堆 //这里升序排列 void Swap(int* x, int* y) {int tmp *x;*x *y;*y tmp; }void AdjustDown(int* arr, int parent, int n) {int child 2 * parent 1;while (child n){if (arr[child 1] arr[child] child 1 n){child;}if (arr[child] arr[parent]){Swap(arr[child], arr[parent]);parent child;child 2 * parent 1;}else{break;}} }//Heap是堆的意思Sort是排序的意思 void HeapSort(int* arr, int n) {//先用所给的数组向下调整建一个堆for (int i (n-1-1)/2;i 0;i--){AdjustDown(arr, i, n);}//然后每次交换堆顶元素和最后一个元素让剩余元素建大堆int end n;while (end 0){//先交换Swap(arr[0], arr[--end]);//然后剩下元素建大堆AdjustDown(arr, 0, end);} } 测试用例 void Test() {int arr[] { 10, 9, 2, 4, 6, 11, 56, 20, 15, 19};int n sizeof(arr) / sizeof(arr[0]);HeapSort(arr, n);for (int i 0; i n; i){printf(%d , arr[i]);} }int main() {Test();return 0; } 4  时空复杂度分析 1 时间复杂度 在上一篇文章中我们分析了向下调整算法的时间复杂度为 O(logn) 的而在堆排序里面共有两次循环第一次循环会执行 n/2 - 1 次第二次循环会执行 n 次而这两次循环里面都嵌套了向下调整算法所以时间复杂度为 O( (n/2 - 1)*logn  nlogn)去除常数项和低阶项堆排序时间复杂度就是 O(nlogn)的。 2 空间复杂度 由于堆排序算法仅用了几个变量并为额外开辟空间所以空间复杂度为 O(1)。
http://www.dnsts.com.cn/news/274348.html

相关文章:

  • 广州网站建设新科分公司有建设网站的公司吗
  • 百度主机做视频网站怎么样用服务器ip做网站域名
  • 班级网站制作建设的设计和作用快速开发小程序
  • 免费提供空间的网站北京高端网站建设规划
  • 帮人建网站价格赚钱吗唐四薪php网站开发答案
  • 做衣服外单网站北京网站建设公司费用浩森宇特
  • 深圳网站建设制作公司互联网技术公司
  • 网站三网合一什么意思个人网页制作成品简单
  • 发现了一个做字素的网站单页面网站怎么做的
  • 福州仓前网站建设wordpress dns解析
  • 云南省工程建设交易系统网站腾讯网站开发语言
  • 五金加工厂怎么做网站深圳网页设计兴田德润实惠
  • 沈阳铁西做网站公司电商新品营销推广方案
  • 怎么建设国字形网站宁波seo服务推广软件
  • 网站建设推广好处建设银行网站注册不了
  • 苏州网站建设设计公众号同步到dede网站
  • 做好网站建设的重要性深圳三站合一网站建设
  • 用wordpress建立学校网站吗能制作网站的软件
  • 宿迁建设局网站a类证查询西宁最好网站建设公司哪家好
  • 如何建造网站深圳网站建设信科便宜
  • 如何做自己网站的访问记录oshin wordpress
  • 网站编程语言排行榜广东东莞发布最新消息
  • 如何自己建个网站企业网站 案例
  • 阿里云网站怎么备案域名网站开发语言入门
  • 怎么制作网站游戏微信定制开发
  • 云建网站石家庄封控最新消息
  • 宣化网站制作公司网站建设维护服务协议
  • CP网站开发制作H5秒收的网站
  • 成品网站w灬源码1688网页版建设企业网站网站崩溃
  • 漫画网站php源码网络安全运维工程师