发布时间 : 星期二 文章数据结构实验报告——排序更新完毕开始阅读c0a78a39a9114431b90d6c85ec3a87c240288a9e
附录源码:
(包括三个cpp文件) Main.cpp
#include
[])={&Sort::InsertSort,&Sort::ShellSort,&Sort::BubbleSort,&Sort::QuickSort,&Sort::SelectSort,&Sort::HeapSort,&Sort::MergeSort};
char *funcName[7]={\、插入排序:\、希尔排序:\、冒泡排序:\、快速排序:\、选择排序:\、堆 排 序:\、归并排序:\
*****************************统计时间函数***************************** void Statistics(Sort &obj,int i,int j) { }
obj.startTime=obj.GetNowTime(); (obj.*pFunction[i])(obj.pRandom1); obj.endTime=obj.GetNowTime();
obj.runtime[i][j]=obj.endTime-obj.startTime;
****************************主调函数********************************* int main(void) {
cout<<\程序说明:\\n1、默认产生10个随机数,如需加大数据量,请修改常量Max;\\n2、
默认打印排序的结果以显示算法正确与否,如果想不打印,请注释相关语句。\\n\\n\
9
Sort obj; obj.CreateData();
memcpy(obj.pRandom1,obj.pRandom2,(Max+1)*sizeof(long int)); int i(0),j(0);
*************************乱序序列********************************* obj.SetTimesZero(); for(i=0;i<7;i++) { }
obj.RecordTimes(0);
*************************顺序序列********************************* obj.SetTimesZero(); for( i=0;i<7;i++)
Statistics(obj,i,1); Statistics(obj,i,0);
cout< 如果不输出各排序结果,请注释掉此两行 obj.PrintArray(obj.pRandom1); if(i!=6) memcpy(obj.pRandom1,obj.pRandom2,(Max+1)*sizeof(long int)); obj.RecordTimes(2); *************************逆序序列********************************* obj.SetTimesZero(); 10 } for(i=1;i<=Max;i++) obj.pRandom2[i]=obj.pRandom1[Max+1-i]; memcpy(obj.pRandom1,obj.pRandom2,(Max+1)*sizeof(long int)); for(i=0;i<7;i++) { } obj.RecordTimes(4); ************************统计排序数据****************************** obj.PrintStatistics(funcName); return 0; Statistics(obj,i,2); memcpy(obj.pRandom1,obj.pRandom2,(Max+1)*sizeof(long int)); Sort.cpp const int Max =10; class Sort { public: Sort(); ~Sort(); void CreateData(void); int InsertSort(long int []); 11 int ShellSort(long int []); int BubbleSort(long int []); int QuickSort(long int []); int QuickSortRecursion(long int [], int ,int); int QuickSortPatition(long int [], int , int ); int SelectSort(long int []); int HeapSort(long int []); void HeapSortSift(long int [], int , int ); int MergeSort(long int []); void Merge(long int [],long int [], int , int , int ); void MergePass(long int [],long int [] , int ); long double GetNowTime(void); void PrintArray(long int*); void SetTimesZero(void); void RecordTimes(int); friend void Statistics(Sort &,int ,int); void PrintStatistics(char *[]); friend int main(void); private: long int *pRandom1; long int *pRandom2; long double runtime[7][3]; 12