死亡伯爵


私信TA

用户名:1124615130

访问量:20174

签 名:

Life is not what we have gained but what we have done.

等  级
排  名 885
经  验 3544
参赛次数 1
文章发表 33
年  龄 19
在职情况 学生
学  校 XiDianUniversity
专  业 ComputerScience

  自我简介:

解题思路:

注意事项:

参考代码:

#include<cstdio>

int arr[100];

void swap(int &a,int& b){

int temp=a;

a=b;

b=temp;

}

void PercDown(int pos,int size){

if(pos>=size)return;

int parent=pos;

int child=parent*2+1;

for(;child<size;parent=child,child=parent*2+1){

if(child+1<size&&arr[child+1]>arr[child])

child++;

if(arr[parent]<arr[child])

swap(arr[parent],arr[child]);

else

return;

}

}

void buildHeap(int size){

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

PercDown(i,size);

}

void heap_sort(int size){

int currentSize=size;

buildHeap(size);

for(;currentSize>0;currentSize){

swap(arr[0],arr[--currentSize]);

PercDown(0,currentSize); 

}

}


int main(){

int size=0;

while(scanf("%d",&size)==1){

int i=0;

while(i<size)

scanf("%d",&arr[i++]);

heap_sort(size);

for(i=0;i<size;i++)

printf("%d ",arr[i]);

putchar('\n');

}

return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »