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

三合一网站包含什么网站怎么做关键词优化

三合一网站包含什么,网站怎么做关键词优化,wordpress 段落间距,网站做的漂浮为什么不动数据结构 | 堆排序 文章目录 数据结构 | 堆排序建立大堆排序结果以及全部代码 如果没有看过堆的实现的话可以先看前面的一章堆的实现,然后再来看这个堆排序,都是比较简单的~~ 这里堆排序首先建堆,建堆是要建小堆还是大堆呢? 在堆排…

数据结构 | 堆排序

文章目录

  • 数据结构 | 堆排序
      • 建立大堆
      • 排序
      • 结果以及全部代码

如果没有看过堆的实现的话可以先看前面的一章堆的实现,然后再来看这个堆排序,都是比较简单的~~

  • 这里堆排序首先建堆,建堆是要建小堆还是大堆呢?
  • 在堆排序算法中,建立大顶堆的过程是为了确保堆的根节点是整个堆中最大的元素。
    当你需要进行升序排序时,你希望最大的元素排在序列的最后
  • 堆排序的基本思想是首先将待排序的序列构建成一个大顶堆,然后将堆顶元素(最大元素)与堆的最后一个元素交换,接着对剩余的元素重新构建大顶堆,然后再次交换堆顶元素与堆的最后一个元素,如此往复,直到整个序列有序。
  • 建立大顶堆的目的是为了每次交换后,将最大的元素沉到序列的末尾,逐步形成有序的序列。如果你希望升序排序,建立大顶堆是符合这一目标的。

建立大堆

void Swap(HPDataType* p1, HPDataType* p2)
{HPDataType tmp = *p1;*p1 = *p2;*p2 = tmp;
}
void AdjustUp_Big(HPDataType* a, int child)
{int parent = (child - 1) / 2;while (child > 0){if (a[child] > a[parent]){Swap(&a[child], &a[parent]);child = parent;parent = (child - 1) / 2;}else{break;}}
}

测试一下:

int a[] = { 4,6,2,1,5,8,2,9 };
int sz = sizeof(a) / sizeof(a[0]);
for (int i = 1; i < sz; i++)
{AdjustUp_Big(a, i);
}

排序

void AdjustDown_Big(HPDataType* a, int size, int parent)
{int child = parent * 2 + 1;while (child < size){if (child + 1 < size && a[child + 1] > a[child])++child;if (a[child] > a[parent]){Swap(&a[child], &a[parent]);parent = child;child = parent * 2 + 1;}else{break;}}
}

在这里插入图片描述

//end是在最后一个元素的下标-1
int end = sz - 1;
while (end > 0)
{//根和最后一个值进行交换,最后一个数不看做堆里面的Swap(&a[0], &a[end]);AdjustDown_Big(a, end, 0);--end;
}

结果以及全部代码

void Swap(HPDataType* p1, HPDataType* p2)
{HPDataType tmp = *p1;*p1 = *p2;*p2 = tmp;
}
void AdjustUp_Big(HPDataType* a, int child)
{int parent = (child - 1) / 2;while (child > 0){if (a[child] > a[parent]){Swap(&a[child], &a[parent]);child = parent;parent = (child - 1) / 2;}else{break;}}
}
void AdjustDown_Big(HPDataType* a, int size, int parent)
{int child = parent * 2 + 1;while (child < size){if (child + 1 < size && a[child + 1] > a[child])++child;if (a[child] > a[parent]){Swap(&a[child], &a[parent]);parent = child;child = parent * 2 + 1;}else{break;}}
}void HeapSort()
{//建大堆int a[] = { 4,6,2,1,5,8,2,9 };int sz = sizeof(a) / sizeof(a[0]);/*for (int i = 1; i < sz; i++){AdjustUp_Big(a, i);}*///向下调整建堆,这样效率更高,上面那个也可以for (int i = (sz - 1 - 1)/2; i >= 0; --i){AdjustDown_Big(a, sz, i);}//打印printf("排序前:");for (int i = 0; i < sz; i++){printf("%d ", a[i]);}printf("\n");//排序//end是在最后一个元素的下标-1int end = sz - 1;while (end > 0){//根和最后一个值进行交换,最后一个数不看做堆里面的Swap(&a[0], &a[end]);AdjustDown_Big(a, end, 0);--end;}//打印printf("排序后:");for (int i = 0; i < sz; i++){printf("%d ", a[i]);}
}

在这里插入图片描述

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

相关文章:

  • 企业网站的域名是该企业的网站建设营销制作设计
  • 宁波做网站优化价格北京商城网站开发公司
  • 公司门户网站建设特点电脑培训学校排名
  • 江苏靖江苏源建设有限公司网站建网站要定制还是第三方系统
  • 网站开发发和后台开发有什么区别精美企业网站
  • 网站制作 服务合肥网络公司注册
  • 单页面网站源码工业和信息化部网站备案查询
  • 襄阳公司网站建设筛选选功能形网站建设
  • 建设公司网站的细节网站建设 公司 广州
  • 网站建设公司落寞黑龙江高端网站建设
  • 小程序链接如何转成网页链接seo搜索优化怎么做
  • 自己学建网站pc端软件开发
  • 域名交易网站档案信息网站开发利用
  • 西安免费建网站制作网站开发与维护介绍
  • 中国建设银行总行官方网站精通网站建设pdf
  • 广东省外贸网站建设关键词seo深圳
  • 竹子林网站建设wordpress后台登陆空白
  • 网站建设绩效考核方案软件开发公司怎么找客户
  • 网站开发分几个模块想做代理商去哪找项目
  • 安徽省工程建设信用平台网站今天发生的重大新闻5条
  • 网站模板制作教程视频wordpress 自建邮件
  • 网站评估 源码wordpress主题大全
  • wordpress搭建博客系统seo排行榜
  • 前端开发人员怎么做网站wordpress 锚点
  • 网站建设是指下载整个网站的软件
  • 网站词库怎么做门业网站源码
  • 网站做电源优秀vi设计
  • 网站的横幅怎么做建设网站 知乎
  • wordpress建站属于前端设计之家官方网站
  • 广东住房城乡建设厅网站首页动易网站 教程