#include<iostream>
#include<algorithm>
#include"SortTestHelper.h"
using namespace std;
template<typename T>
void selectionSort(T arr[],int n){
for(int i=0;i<n;i++){
int min=i;
for(int j=i+1;j<n;j++){
if(arr[j]<arr[min]){
min=j;
}
}
swap(arr[i],arr[min]);
}
}
int main(){
int n=10000;
int *arr=SortTestHelper::generateRandomArray(n,0,n);
SortTestHelper::testSort("selectionSort",selectionSort,arr,n);
delete[] arr;
system("Pause");
return 0;
}
#include<iostream>
#include<ctime>
#include<cassert>
using namespace std;
namespace SortTestHelper{
int* generateRandomArray(int n,int rangeL,int rangeR){
assert(rangeL<=rangeR);
int* arr=new int[n];
srand(time(NULL));
for(int i=0;i<n;i++)
arr[i]=rand()%(rangeR-rangeL+1)+rangeL;
return arr;
}
template<typename T>
void printArray(T arr[],int n){
for(int i=0;i<n;i++)
cout<<arr[i]<<" ";
cout<<endl;
return ;
}
template<typename T>
bool isSorted(T arr[],int n){
for(int i=0;i<n-1;i++)
if(arr[i]>arr[i+1])
return false;
return true;
}
template<typename T>
void testSort(string sortName,void(*sort)(T[],int),T arr[],int n){
clock_t startTime=clock();
sort(arr,n);
clock_t endTime=clock();
assert(isSorted(arr,n));
cout<<sortName<<":"<<double(endTime-startTime)/CLOCKS_PER_SEC<<"s"<<endl;
return;
}
}