資源簡介
用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<????ofs2.close();?
//開始測試?
*ofs< cout<<“*******************************************************************“< cout<<“排序內容:0~999共“?< 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<<“第“<
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????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
評論
共有 條評論