改動了一下的堆排序

昨日閒來無事就寫了下堆排
#include <iostream.h>
typedef int DataType;
class S{
	public:
	static void swap(DataType& x,DataType& y);
	static void heap_sort(DataType a[],int num);
	static void GenerateArray(DataType a[],int num);
	static void AdjustHeap(DataType a[],int pos,int len);
};
void S::swap(DataType& x,DataType& y){
	DataType temp;
	temp = x;
	x = y;
	y = temp;
}
//調整堆 
void S::AdjustHeap(DataType a[],int pos,int len){

	for (int i = len-1;i>0;i--){
		if(a[i]>a[i/2])
			S::swap(a[i],a[i/2]);	
	}
	
}
void S::heap_sort(DataType a[],int len){
	
	while(len>0){
		S::AdjustHeap(a, 0, len);
		len--;
		S::swap(a[0],a[len]);
	}
}
//生成樣本數組
void S::GenerateArray(DataType a[],int num)
{
	int i;
	srand(time(NULL));
	for(i=0;i<num;i++)
	{
		a[i]=(DataType)(rand()); 
	}
}
int main(int argc, char *argv[])
{
	DataType a[10];
	int num = 10;
	S::GenerateArray(a,10);
	cout<<"堆排序之前"<<endl;
	for(int i=0;i<num;i++){
		cout<<a[i]<<" ";
	}
	cout<<endl;
	S::heap_sort(a,num); 
	cout<<"堆排序之後"<<endl;
	for(int i=0;i<num;i++){
		cout<<a[i]<<" ";
	}
	cout<<endl;
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章