600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C++实现堆排序

C++实现堆排序

时间:2023-08-30 17:39:47

相关推荐

C++实现堆排序

C++实现堆排序:

#include<iostream>

#include<vector>

using namespace std;

void maxheapify(int *A,int i,int size)

{

int left=2*i,right=2*i+1,largest=i;

if(left<=size&&A[i]<A[left])

largest=left;

if(right<=size&&A[largest]<A[right])

largest=right;

if(largest!=i)

{ int temp=A[i];

A[i]=A[largest];

A[largest]=temp;

maxheapify(A,largest,size);

}

}

void heapbuild(int *A,int size)

{

for(int i=size/2;i>=1;i--)

maxheapify(A,i,size);

}

void heapsort(int *A,int size)

{

heapbuild(A,size);

int num=size;

for(int i=size;i>=2;i--)

{

int temp=A[1];

A[1]=A[i];

A[i]=temp;

num--;

maxheapify(A,1,num);

}

}

int main(){

/*size_t number=0;

vector<int>vec;

int num;

while(cin>>num)

vec.push_back(num);

cin.clear ();

number=vec.size();

cout<<"输入数字个数"<<number<<endl;

int *p=new int[number];

cout<<"输入的数组"<<endl;

for(vector<int>::iterator iter=vec.begin();iter!=vec.end();++iter,++p)

*p=*iter;*/

// int A[10]={11,3,4,2,7,5,6,9,8,10};

//heapsort(A,10);

//for(int i=1;i>=9;i++)

// cout<<A[i]<<" ";

int A[100];

for(int i=1;i<=10;i++)

cin>>A[i];

heapsort(A,10);

for(int i=1;i<=10;i++)

cout<<A[i]<<" ";

return 0;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。