标题:我把书上的“堆排序”(Heap Sort)编程实现了
只看楼主
kappa314
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2004-10-9
 问题点数:0 回复次数:0 
我把书上的“堆排序”(Heap Sort)编程实现了

#include"iostream"

#include"iomanip"

using namespace std;

void FixHeap(int list[],int root,int key,int bound){

int i,vacant,largerChild;

vacant=root;

while(2*vacant<=bound){

largerChild=2*vacant;

if(largerChild<bound&&list[largerChild+1]>list[largerChild])

largerChild=largerChild+1;

if(key>list[largerChild])

break;

else{

list[vacant]=list[largerChild];

vacant=largerChild;

}//else

}//while

list[vacant]=key;

cout<<"The new list is:\n";

for(i=1;i<=100;i++){//output the list

cout<<setw(2)<<list[i]<<" ";

if(i%10==0)

cout<<"\n";

}//for

}//FixHeap

void HeapSort(int List[],int N){

int i,max;

for(i=N/2;i>=1;i--)

FixHeap(List,i,List[i],N);

for(i=N;i>=2;i--){

max=List[1];

FixHeap(List,1,List[i],i-1);

List[i]=max;

}//for

}//HeapSort

int main(){

int a[101],i;

a[0]=0;

for(i=1;i<101;i++){

a[i]=rand()%100;

a[0]++;

}//for

cout<<"\nThe original elements are:\n";

for(i=1;i<101;i++){

cout<<setw(2)<<a[i]<<" ";

if(i%10==0)

cout<<"\n";

}//for

cout<<endl<<endl;

HeapSort(a,100);

return 0;

}//main

搜索更多相关主题的帖子: Heap Sort Roman 
2004-11-22 03:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-8136-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.784825 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved