当前位置: 首页 > 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.yidumall.com/news/14216.html

相关文章:

  • 厦门网站建设培训学校seo建站技巧
  • 北京建设工程交易信息网站简单的网页设计作品
  • 城乡与建设部网站广告联盟官网
  • 外贸购物网站建设seo招聘职责
  • 江苏港口建设费申报网站今日竞彩足球最新比赛结果查询
  • 南宁网站设计图找人帮忙注册app推广
  • 怎样才能做公司的网站如何刷seo关键词排名
  • 武汉做网站做得好的设计工作室软文写作案例
  • 湘潭网站建设优选磐石网络广州商务网站建设
  • 网站制作 常州东莞网络推广系统
  • 建立网站的步骤及费用德阳seo
  • 专门做旅游攻略的网站有哪些网络广告推广方法
  • 茶叶网站flash模板湖南网站建站系统哪家好
  • 网站安全解决方案企业网站设计论文
  • 南京做网站群的公司淘宝关键词优化怎么弄
  • 现在收废品做哪个网站好阜新网站seo
  • wordpress4.9默认主题网站seo分析报告案例
  • 网站建设费用 开办费成都seo培训班
  • 2018做网站赚钱不百度推广电话
  • 品牌网站建设十小蝌蚪哪里有免费的网站推广服务
  • 做网站需要啥备案之类的嘛关键词举例
  • 网站降权该怎么做聊城网站推广的公司
  • 企业所得税怎么算利润百家号优化
  • 湘潭企业网站建设网络推广服务费
  • 哪个小说网站可以做封面怎样建网站?
  • 功能型类的网站整站优化代理
  • 通辽网站seo班级优化大师的功能
  • 做网站之前需要准备什么软件google学术搜索
  • 重庆二级站seo整站优化排名电脑办公软件培训班
  • 网站后台传照片 c windows temp 拒绝访问产品推广朋友圈文案