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

哪有做奇石网站app开发过程中的困难

哪有做奇石网站,app开发过程中的困难,文化传媒公司 网站备案,电影网站建设方案ppt在heap堆中,大根堆是一种特殊的堆,它满足下列性质:对于任意一个非叶子节点i,其左右子节点的值均小于等于它本身的值。 在大根堆中,堆顶元素永远是值最大的元素,所以将堆顶元素不断取出来,就相当…

在heap堆中,大根堆是一种特殊的堆,它满足下列性质:对于任意一个非叶子节点i,其左右子节点的值均小于等于它本身的值。

在大根堆中,堆顶元素永远是值最大的元素,所以将堆顶元素不断取出来,就相当于对数组进行了从大到小的排序操作。

相比较于其他排序算法,使用大根堆进行数组排序的优点在于:

1:时间复杂度稳定为O(nlogn),空间复杂度仅为O(1),并且算法实现简洁、易于理解。

2:由于大根堆的特殊性质,堆排序还具有良好的局部性和稳定性,能够保持元素在排序前后的相对位置关系,不会改变具有相同值的元素之间的顺序。

下面用图片来梳理我们的思路


                                        代码注解

首先我们先创建一个数组:

1: 首先我们将数组中的值建立成大根堆

2:首尾换位,向下调整成为循环

 我们将数组中的值建立成大根堆的Adjustup函数的实现

Adjustup函数的实现的空间复杂度(3条消息) 堆的向下调整与向上调整的时间复杂度_biter down的博客-CSDN博客

我们将数组中的值建立成大根堆的Adjustup函数的实现

Adjustdown函数的实现的空间复杂度(3条消息) 堆的向下调整与向上调整的时间复杂度_biter down的博客-CSDN博客

 


                                   源码提供参考:

#include<stdio.h>
void Swap(int* p1, int* p2) {
    int t = *p1;
    *p1 = *p2;
    *p2 = t;
}

void AdjustDown(int* a, int size) {
    int parent = 0;
    //将leftchild作为最大的孩子
    int child = parent * 2 + 1;
    while (child < size)
    {
        //当leftchild的值小于rightchlid时,child的值应该为较大值的右孩子
        if (child + 1 < size && a[child + 1] > a[child])
        {
            child++;
        }
        Swap(&a[child], a[parent]);
        parent = child;
        child = child * 2 + 1;
    }
}

void AdjustUp(int* a, int child)
{
    int parent = (child - 1) / 2;
    while ( child != 0 && a[child] > a[parent])
    {
        Swap(&a[child], a[parent]);
        child  = parent;
        parent = (parent - 1) / 2;
    }
}

//排升序,建大根堆
void HeapSort(int* a,int n)
{
    //将数组中的值建立成大根堆
    for (int i = 1; i < n; ++i)
    {
        AdjustUp(a, i);
    }
    //将大根堆数组的元素升序
    for(int i=n;i>0;i--)
    {
        Swap(&a[0], &a[i]); //首尾互换
        AdjustDown(a, i); //向下调整
    }
}
int main()
{
    int arr[10] = { 2,1,5,7,6,8,0,9,4 };         //对数组进行大根堆排序
    HeapSort(arr, sizeof(arr) / sizeof(arr[0])); 
    return 0;
}

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

相关文章:

  • 如何降低网站的权重上海网站建设哪家技术好
  • 网站营销推广培训办公室装修效果图片
  • 哪里有响应式网站企业wordpress推荐链接
  • 滕州英文网站建设青岛制作网站的
  • 做网站的费用如何入账上海大规模网站建设平台
  • 免费的企业黄页网站浏览器主页网址推荐
  • 有关建筑网站建设方案企业形象策划论文
  • 加拿大购物网站排名自己给公司做网站
  • 网站建设 个人服务器河南郑州广城区
  • 如何搜名字搜到自己做的网站企业网站建设 详细方案
  • 个人做 下载类网站宁波专业做网站
  • 企业网站关键词排名邯郸信息港邯郸信息网
  • asp代码如何修改asp网站网页域名名称网站运营一般做那些分析
  • 赶集网天津网站建设数字化营销怎么做
  • 房地产网站推荐电商平台下载
  • 网站接电话做视频网站赚钱吗
  • 山东省两学一做网站wordpress商品分类目录
  • 网站开发是程序员吗做电影网站模板教学
  • 陵水建设局网站中国十大云计算公司排名
  • dw如何做商业网站cpa单页网站怎么做
  • 付费电影网站源码私募基金网站怎么做seo
  • jsp是否可以做网站wordpress模板哪里买
  • 电子商务网站开发方式建设银行假网站
  • 辽宁公司网站建设网站制作软件下载
  • 中色冶金建设有限公司网站站长统计幸福宝2022年排行榜
  • 免费开源企业网站做网站su
  • 网站建设前期分析的内容建网站公司联系方式
  • 网站怎么做多级菜单wordpress连续id
  • 写资料的网站有哪些wordpress运行死慢
  • 做网站 excel有创意的设计作品