c++堆排序源代码

  
 <代码> # include“stdafx.h”
  # include & lt; iostream>
  使用名称空间性病;
  template
  空调整(T * arr int, int len) {
  T temp=arr(信号);//每一次循环都更新该父节点为根的完全二叉树最大的堆
  for (int i=符号* 2 + 1;我& lt;兰;我=* 2 + 1){
  如果(i + 1 & lt;兰,,加勒比海盗(i + 1)比;加勒比海盗[我])
  我+ +;//判断子节点大于父节点
  如果(arr[我]比;临时){
  arr[签署]=arr[我];
  符号=我;
  }
  }
  加勒比海盗(迹象)=temp;
  }
  
  template
  无效的交换(T * arr int x, int y) {
  T temp=arr [x];
  arr [x]=arr [y];
  加勒比海盗[y]=temp;
  }
  
  template
  孔隙类型(T * arr int长度){//1。从所有非叶子节点构建初始大顶堆
  for (int i=长度/2 - 1;我在=0;我(){
  调整(加勒比海盗,我、长度);
  }//for (int i=- 1长度;我;我(){//2。交换最大堆和相对的最后一个元素
  交换(加勒比海盗,我,0);//3 .重新调整堆结构
  调整(arr 0我);
  }
  }
  
  template
  空白打印(const T * ar, int len) {
  for (int j=0;j & lt;兰;j + +) {
  cout & lt; & lt;j & lt; & lt;”:“& lt; & lt;基于“增大化现实”技术的研究[j] & lt; & lt;endl;
  }
  }
  int _tmain (int命令行参数个数,_TCHAR * argv [])
  {
  arr int []={0、2、1, 4, 3、6、8、9、7、5};
  排序(arr 10);
  打印(arr 10);
  获取字符();
  返回0;
  } 

c++堆排序源代码