改动了一下的堆排序

来源:互联网 发布:新奥集团怎么样知乎 编辑:程序博客网 时间:2024/06/07 10:45
昨日闲来无事就写了下堆排
#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;}

0 0
原创粉丝点击