堆排序
Posted chuxinbubian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了堆排序相关的知识,希望对你有一定的参考价值。
堆最好是使用数组来表示。。。。。
#include<iostream> using namespace std; void swap(int arr[],int i,int j) int temp = arr[i]; arr[i]=arr[j]; arr[j]=temp; void heapify(int tree[],int n,int i)//n代表节点的数目,i代表对那个数字进行操作 if(i>=n) return ; int c1=2*i+1;//左儿子 int c2=2*i+2;//右儿子 int max =i; if(c1<n&&tree[c1]>tree[max]) max=c1; if(c2<n&&tree[c2]>tree[max]) max=c2; if(max !=i) swap(tree,max,i); heapify(tree,n,max); int main() int tree[]=4,10,3,5,1,2;//待排序的堆 int n=6; heapify(tree,n,0); for(int i=0;i<n;i++)//打印排序后的结果 cout<<tree[i]<<endl; return 0;
以上是关于堆排序的主要内容,如果未能解决你的问题,请参考以下文章