资源简介

用C++编写。 里面有详细的插入排序,快速排序,合并排序和选择排序的代码。 排序算法测试实验通过设计测试数据集,编写测试程序,用于测试三种算法的正确性,三种算法在不同复杂性上的表现(最好情况、最差情况、平均情况),三种算法每次的的比较频率和腾挪频率。 使用说明:Sort_Test.cpp可以直接运行,输出结果可在本文件夹下的Result.txt中查看

资源截图

代码片段和文件信息

#include
#include 
#include 
#include
#include
#include
#include
#include 
#include 
#include 
#include“InsertSort.h“
#include“QuickSort.h“
#include“QuickSort2.h“
#include“MergeSort.h“
#include 
using namespace std;
 
void QuickSort(int a[]int pint rint &Compare_Countint &Shift_Count);    //快速排序
void QuickSort2(int a[]int pint rint &Compare_Countint &Shift_Count);   //快速排序随机选择策略 
void InsertSort (int a[] int n);                                           //插入排序
void MergeSort(int a[]int n);                                              //合并排序 
  


int main()
{
clock_t start finish;
//测量一个事件持续的时间
double  duration;             
ofstream *ofs;     
    //将所有输出结果保存到一个文件中方便比较结果          
string fileName = “Result.txt“;        
ofs = new ofstream(fileName.c_str()ios::out|ios::app);
//为使计算结果接近理论值,将size取到非常大
const int size = 10000;                 
int a[size];
int b[size];
//用于比较次数和移动次数的计数
int Compare_Count=0 Shift_Count=0;    
srand(time(0));
ofs->close();
ofs->open(fileName.c_str()ios::out|ios::app);
if( ofs->fail())
{
         cout<<“!!“;
 ofs->close();
}
//为使计算结果接近理论值,这size个数随机取值 
for(int k =1; k <=size; ++k)
{
a[k] = rand()%1000;
b[k] = a[k];



//在文件中写入运行程序的时间 
SYSTEMTIME sys; 
    GetLocalTime( &sys );      
    ofstream ofs2;
    char filename[16]=“Result.txt“;
    ofs2.open(filenameostream::app);
    ofs2<< sys.wYear<< “/“ << sys.wMonth << “/“ << sys.wDay << “  “ << sys.wHour<<“:“<    ofs2.close(); 


//开始测试 
*ofs< cout<<“*******************************************************************“< cout<<“排序内容:0~999共“ << size <<  “ 个整数“< cout<<“*******************************************************************“<
//平均情况
    cout<<“第1次:平均情况“<       “分别进行三种排序(快速排序、插入排序、合并排序)“ < *ofs<

//快速排序
cout<<“===================================================================“< cout<<“快速排序:“< *ofs< cout< double duration_arrayf1[10]; 
for(int  i=0 ; i<10; ++i)
{
for( int k =1; k <=size; ++k)
        {
              a[k] = b[k];
    }
      cout<     start = clock();
     QuickSort(a1sizeCompare_CountShift_Count);
    finish = clock();
    duration_arrayf1[i] = (double)(finish - start) / CLOCKS_PER_SEC;
    cout<        “总的腾挪次数为:“<     cout<<“快速排序: “<     *ofs<<“第“<< i <<“次快速排序: “ <

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-05-18 20:36  三种排序算法测试实验\
     文件        1317  2015-04-22 21:27  三种排序算法测试实验\InsertSort.h
     文件        1831  2015-04-22 21:27  三种排序算法测试实验\MergeSort.h
     文件         955  2015-04-22 21:27  三种排序算法测试实验\QuickSort.h
     文件        1397  2015-04-22 21:27  三种排序算法测试实验\QuickSort2.h
     文件           0  2015-05-18 20:37  三种排序算法测试实验\Result.txt
     文件       16268  2015-04-22 21:06  三种排序算法测试实验\Sort_Test.cpp
     文件     1376978  2015-04-22 21:04  三种排序算法测试实验\Sort_Test.exe

评论

共有 条评论