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

如何从网站获取图片做全景图学校网站建设

如何从网站获取图片做全景图,学校网站建设,广州宣传片制作,南通 网络 公司网站1.概念 堆排序是一种树形选择排序,是对简单选择排序的有效改进和优化。 堆(heap),这里所说的堆是数据结构中的堆(对应于算法),而不是内存模型中的堆(数据存储形式,还比如:栈&#…

1.概念

堆排序是一种树形选择排序,是对简单选择排序的有效改进和优化。

堆(heap),这里所说的堆是数据结构中的堆(对应于算法),而不是内存模型中的堆(数据存储形式,还比如:栈)。

堆数据结构是一种特殊的完全二叉树,在这棵树中,所有父节点都满足大于等于其子节点的堆叫大根堆,所有父节点都满足小于等于其子节点的堆叫小根堆。堆虽然是一颗树,但是通常存放在一个数组中,父节点和孩子节点的父子关系通过数组下标来确定。

由堆的定义可以看出,大顶堆的堆顶元素(即第一个元素)必为最大项(大顶堆),小顶堆的堆顶元素(即第一个元素)必为最小项(小顶堆)。完全二叉树可以很直观地表示堆的结构。堆顶为根,其它为左子树、右子树。 

2.算法原理:

对于要排序为大顶堆的算法来说:初始时把要排序的数的序列看作是一棵顺序存储的二叉树,调整它们的存储序,使之成为一个堆,最后堆的根节点的数最大。每一次子排序(末尾为n)完成后,会将根节点与堆的最后一个节点交换。 然后对前面(n-1)个数重新调整使之成为堆。依此类推,直到只有两个节点的堆,并对它们按照大小条件作交换,最后得到有n个节点的有序序列。 从算法描述来看,堆排序需要两个过程,一是建立堆,二是堆顶与堆的最后一个元素交换位置。所以堆排序有两个函数组成。一是建堆的渗透函数,二是反复调用渗透函数实现排序的函数。

3.步骤:

1)从最后一个节点到第一个节点逐次调用将序列构建成大顶堆。

2)将根节点与最后一个节点交换,然后断开最后一个节点,形成更新后的最后一个节点。

3)重复第一、二步,直到所有节点断开。

4.代码

以下使用Java代码作为示例:

/**堆排序总入口函数arr:要排序的数组*/public void heapSort(int[] arr) {int len = arr.length;//循环建堆for (int i = 0; i < len - 1; i++) {//建堆,len-1-i表示从当前末尾最大的元素之前开始排序buildMaxHeap(arr, len - 1 - i);//交换堆顶和最后一个元素swap(arr, 0, len - 1 - i);}}//交换元素private void swap(int[] data, int i, int j) {int tmp = data[i];data[i] = data[j];data[j] = tmp;}//对data数组从0到lastIndex建大顶堆private void buildMaxHeap(int[] data, int lastIndex) {//从lastIndex处节点的父节点(非叶子节点,索引为(lastIndex - 1) / 2)开始,直到第一个节点(下标为0)for (int i = (lastIndex - 1) / 2; i >= 0; i--) {//k保存正在判断的节点int k = i;//如果当前k节点的子节点存在(k节点的左子节点的索引为2*k+1,右子节点的索引为2*k+2)while (2 * k + 1 <= lastIndex) {//k节点的左子节点的索引int biggerIndex = 2 * k + 1;//如果biggerIndex小于lastIndex,即代表的k节点的右子节点的索引为biggerIndex+1的节点存在if (biggerIndex < lastIndex) {//若果右子节点的值较大,则更新左右子节点值更大的对应的索引到biggerIndexif (data[biggerIndex] < data[biggerIndex + 1]) {//biggerIndex总是记录较大子节点的索引,当前即右子节点biggerIndex++;}}//如果k节点的值小于其较大的子节点的值,则进行交换位置,将更大值放到开始if (data[k] < data[biggerIndex]) {//交换节点,使父节点的值更大swap(data, k, biggerIndex);//将biggerIndex赋予k,开始while循环的下一次循环,重新保证k节点的值大于其左右子节点的值k = biggerIndex;} else {break;}}}}


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

http://www.tj-hxxt.cn/news/71028.html

相关文章:

  • 做艺术教育类网站如何申请app拉新项目
  • 企业网站建设定制怎样宣传自己的品牌
  • 网站上动态图片怎么做宁波网络营销公司有哪些
  • 天津专业做网站的公司有哪些八百客crm登录入口
  • 邢台市教育局官网windows优化大师免费
  • 网站开发工具简介永久免费用的在线客服系统
  • 做像淘宝网的网站百度收录权重
  • 乌鲁木齐seo济南新站seo外包
  • 搭建网站硬件要求qq推广软件
  • 怎么做自己的单页网站培训心得体会范文大全1000字
  • 无锡网站建设工作室上海公关公司
  • 郑州网站推广外包做一个自己的网站
  • 淄博做网站哪家好百度排名点击软件
  • 微网站开发项目合作协议seo助力网站转化率提升
  • 给企业做网站的公司有哪些什么软件可以推广
  • 聚成网络网站建设seo推广优化公司哪家好
  • metro wordpress上海好的seo公司
  • 企业网站的开发建设方案怎么写今天发生了什么重大新闻
  • 模块化网站建设系统四年级下册数学优化设计答案
  • 网站左边logo图标怎么做石家庄谷歌seo公司
  • 你有网站 我做房东 只收佣金的网营销手机系统安装
  • 怎么样百度搜到自己的网站设计网页的软件
  • 军事网站建设怎么打seo优化入门教程
  • 网站宣传的方式seo优化托管
  • 研究院网站建设的内容西安网约车
  • wordpress 代码块样式北京外包seo公司
  • 网站做直播需要资质吗谷歌官网登录入口
  • 可以做电算化的网站百度自动点击器下载
  • 买国外域名 网站优化大师下载电脑版
  • 建设通网站是筑龙网的吗免费关键词搜索引擎工具