µ±Ç°Î»ÖãºÊ×Ò³ > ±±ÓÊÊý¾Ý½á¹¹ÊµÑé µÚÈý´ÎʵÑé ÅÅÐò
Ô´´úÂ룺ÓÉ3²¿·Ö×é³É //main.cpp
#include
static int (Sort::*pFunction[7])(long int [])={&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() {
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++) {
Statistics(obj,i,0);
cout< memcpy(obj.pRandom1,obj.pRandom2,(Max+1)*sizeof(long int)); } obj.RecordTimes(0); /*************************˳ÐòÐòÁÐ*********************************/ obj.SetTimesZero(); for( i=0;i<7;i++) Statistics(obj,i,1); µÚ13Ò³ obj.RecordTimes(2); /*************************ÄæÐòÐòÁÐ*********************************/ obj.SetTimesZero(); 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++) { Statistics(obj,i,2); memcpy(obj.pRandom1,obj.pRandom2,(Max+1)*sizeof(long int)); } obj.RecordTimes(4); /************************ͳ¼ÆÅÅÐòÊý¾Ý******************************/ obj.PrintStatistics(funcName); return 0; } //Sort.h const int Max =50; class Sort { public: Sort(); ~Sort(); void CreateData(void); int InsertSort(long int []); 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); µÚ14Ò³ 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]; int comparetimes[7]; int movetimes[7]; int timestable[7][6]; long double startTime,endTime; }; //Function.cpp #include\#include /**********************************************************¹¹Ô캯Êý**********************************************************************/ Sort::Sort() { memset(timestable,0,sizeof(int)*7*6); } /***********************************************************¹¹ÔìÊý×é**********************************************************************/ void Sort::CreateData() { pRandom1=new long int[Max+1]; pRandom2=new long int[Max+1]; srand((unsigned)time(NULL)); for(int i = 1; i <= Max;i++ ) pRandom2[i]=rand(); cout<<\Ëæ»úÂÒÐòÊý×éÈçÏ£º\\n\ //Êä³öÔʼÊý×é PrintArray(pRandom2); } /********************************************************¼òµ¥²åÈëÅÅÐò µÚ15Ò³ *******************************************************************/ int Sort::InsertSort(long int parray[]) { int j=0; for(int i =2; i <= Max;i++) { parray[0]=parray[i]; comparetimes[0]++;//±È½Ï´ÎÊýͳ¼Æ for(j=i-1;parray[0] parray[j+1]=parray[j]; movetimes[0]++;//ÒÆ¶¯´ÎÊýͳ¼Æ } parray[j+1]=parray[0]; movetimes[0]+=2; } return 0; } /**********************************************************Ï£¶ûÅÅ***********************************************************************/ int Sort::ShellSort(long int parray[]) { int j=0; for(int d=Max/2;d>=1;d/=2) { for(int i=d+1;i<=Max;i++) { parray[0]=parray[i]; comparetimes[1]++; for(j=i-d;j>0 && parray[0] parray[j+d]=parray[j]; movetimes[1]++; } parray[j+d]=parray[0]; movetimes[1]+=2; } } return 0; } /**********************************************************ðÅÝÅÅ***********************************************************************/ int Sort::BubbleSort(long int parray[]) { µÚ16Ò³ Ðò Ðò
¹²·ÖÏí92ƪÏà¹ØÎĵµ