设为首页 - 加入收藏 认准体育资讯站(https://www.cbohao.com),专注体育资讯大品牌游戏!
热搜:
广告位
当前位置: 主页 > 健康 >

C++堆排序算法的实现方法_C 语言

2017-10-16 09:24 [健康] 来源于:网络整理

 本文例说明了C++使掉转船头堆排序算法的办法,信任对完整地仿真数据建筑学和算法首府起到功能。。特殊性如次:

 率先,鉴于堆排序算法说起来比较地长,让人们独自谈谈吧。。堆排序是一种株选择排序办法,它的特有的是:在分类工艺过程中,把L尊敬是完整二元系的一陆续希腊字母第12字建筑学。,父植物的节和子植物的节中间的内在相干,在赠送使凌乱分区中选择保留字最大(或最小)元素。

一、清晰度堆

清晰度堆如次:n保留字序列l形状了堆,当且仅当序列做完时:
①L(i) <= L(2i)和L(我) <= L(2i+1)  或者  ②L(i) >= L(2i)和L(我) >= L(2i+1)   我属于[ 1 ], n/2]。

偶然发现第一叫小堆的记录(小堆顶),做完主要前提的堆称为大根堆(大)。。大树根桩,最大的元素希腊字母第12字在根植物的节中。,在附近无论哪些非根植物的节,它的值以内或势均力敌的其父植物的节值。。相反的小堆,小堆希腊字母第12字的根植物的节是最小的元素。。像,{ 16, 14, 10, 8, 7, 9, 3, 以2 }表现的大型号的根堆:

                                 

二、体系初始堆栈

堆排序的结症是构造初始堆。栈。完整二叉树说话中肯n个植物的节,最大的一植物的节坐落在n/2(取整)一子植物的节。。因而体系初始堆栈的过程是:每身材滤色镜的n/2(舍入)一植物的节(以根堆为例),在保留字保留字中,他的植物的节以内子植物的节。,Swap),使子树变成堆。继,每个植物的节从N / 2-1 1子树的预过滤,检查植物的节的值假设大于左派的和右面的值。,若不是,在摆布植物的节中间相互交换较大的值,相互交换可能性残害下一级堆。,因而人们持续运用上面的办法构造下一渐变堆。,直到以植物的节为根的子树才是堆。反复运用校准堆构造堆,直到根植物的节。

因大厦说话中肯下标从0开端。,因而在堆中,我的左子植物的节是2×i 1。,好好地的子植物的节为2×i 2。。上面是一算法来校准我的一植物的节来构造一堆:

void AdjustDown(ElementType A[], int i, int len) 
{ 
  ElementType temp = [我] // 短暂地的[我] 
   
  为(int largest=2*i+1; largest[最大] 
      ++largest;     // 万一好好地的子植物的节是大的 
    万一(高烧 < [最大] 
    { 
      [我] = A[largest]; 
      i = largest;     // 记录相互交换后的位置 
    } 
    else 
      break; 
  } 
  [我] = temp;  // 被筛选结点的值放入最终位置 
} 
 

建堆,从N/2(下舍入)到1的植物的节下校准,自然,大厦下标在0开端。,因而:

void BuildMaxHeap(ElementType A[], int len) 
{ 
  为(int i=len/2-1; i>=0; --i) // 从i/N/2-1到0,反复的原子炉 
    AdjustDown(A, i, Len) 
} 

三、堆排序

体系初始堆栈成不久以后,堆排序的思惟很复杂。:率先将放置在L[n]说话中肯n个元素起动初始堆,因这堆自身的特有的(以大根HEA,顶部元素是最高值。。在出口堆的顶部元素后来的,通常本质元素被发送到堆顶。,此刻,根植物的节不做完大滚道的属性。,Pile failure。继校准自顶下的元素以付定金保留大的属性。,叠顶元件。因此反复,直到堆中最适当的一元素。该算法的使掉转船头如次:

void HeapSort(ElementType A[], int n) 
{ 
  BuildMaxHeap(A, n);    // 初步引起 
  为(int i=n-1; i>0; --i) // n-1环形道的转变与堆建工艺过程  
  { 
    // 出口最大堆顶元素(和本质元素相互交换) 
    [ 0 ] = [ 0 ]^[我] 
    [我] = [ 0 ]^[我] 
    [ 0 ] = [ 0 ]^[我] 
    // 校准,将其他n-1个元素放置起来 
    AdjustDown(A, 0, i);   
  } 
} 

四、机能剖析

时期复合物:下校准的时期与树的顶垂线使担忧。,为O(h)。可以证实,堆是引起在元素n的序列用悬挂物装饰的。,时期复合物为o(n)。继有n-1次下校准。,每回校准的时期为o(h),因而这是最好的,最坏健康状况和平衡健康状况,堆排序的时期复合物为O(nlogn)。

租房复合物:最适当的忠实的本利之和的附带单元被运用。,租房复合物为o(1)。。

稳定性:不坚决。

(编辑:admin)

网友评论
无法在这个位置找到: ajaxfeedback.htm
推荐文章
广告位
广告位
广告位