简单的选择排序及按照范围随机生成数组(时间效率)

/* 选择排序*/
#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);
//	selectionSort(arr,n);
//	SortTestHelper::printArray(arr,n);
	SortTestHelper::testSort("selectionSort",selectionSort,arr,n);
	delete[] arr;
	system("Pause");
		return 0;
}






/* 随机生成范围数组的方法 封装成为了SortTestHelper.h文件  方便引用*/
#include<iostream>
#include<ctime>
#include<cassert>
using namespace std;
namespace SortTestHelper{
	//生成有n个元素的随机数组,每个元素的随机范围为[rangeL,rangeR] 
	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();//clock()是时钟周期 
		sort(arr,n);
		clock_t endTime=clock();
		assert(isSorted(arr,n));
		cout<<sortName<<":"<<double(endTime-startTime)/CLOCKS_PER_SEC<<"s"<<endl;// CLOCKS_PER_SEC是标准库中每秒钟有几个时钟周期 		
		return; 
} 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值