#include<iostream>
#include<string>
#include<ctime>
using namespace std;
//选择排序
template<typename T>
void selectionsort(T arr[], int len)
{
for (int i = 0; i < len; i++)
{
int minIndex = i;
for (int j = i + 1; j < len; j++)
{
if (arr[j] < arr[minIndex])
minIndex = j;
}
swap(arr[i], arr[minIndex]);
}
}
//随机数组生成函数
int * generateArray(int len,int low,int high)
{
if(low>high)
return nullptr;
int *arr=new int[len];
srand(time(NULL));
for(int i=0;i<len;++i)
{
arr[i]=random()%(high-low+1)+low;
}
return arr;
}
template<typename T>
bool isSorted(int arr[],int len)
{
for (int i=0;i<len-1;++i)
if (arr[i]>arr[i+1])
return false;
return true;
}
//测试函数
template<typename T>
void sortTest(string sortname,void (*sortfunc)(int arr[],int len),int arr[],int len)
{
clock_t begin=clock();
sortfunc(arr,len);
clock_t end=clock();
if(isSorted(arr,len))
cout << sortname << " : " << double(begin-end)/CLOCKS_PER_SEC << "s" << endl;
}
int main()
{
int *arr=generateArray(2000,0,100);
sprtTest("selection sort",selectionsort,arr,2000);
delete[] arr;
return 0;
}