1. SortTsetHelper命名空间
创建这个,为了在此测试
此命名空间下创建函数
在主函数调用的使用方法:
SortTestHelper::函数名(参数){函数体}
2. 随机数生成
声明#include <stdlib.h>
srand()
rand()
srand为rand提供种子
srand(time(NULL))保证每次调用产生的数字不同
声明 #include \<ctime>
产生确定范围的随机数:
int ix = rand() % 100
产生0-100的随机数
int y = rand() % 100 +1
产生1-100的随机数
int z = rand() % (rangeL - rangeR + 1) + rangeL
产生rangeL~rangeR范围内的随机数
3. assert函数
assert()
声明 #include \<cassert>
作用: assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,assert将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性
在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。
在此使用:
assert(rangeL<=rangeR);
来保证最基本的范围的正确性。
4. 输出数组函数
对数组输出的操作也可写成一个函数
放在命名空间SortTestHelper内
使用时直接调用命名空间下的函数即可
template<typename T>
void printArray (T arr, int n ){
for(int i = 0 ; i < n ; i ++ )
cout<<arr[i]<<" "'
cout << endl;
}
5. 完整代码
SortTestHelper.h 完整代码如下:
#ifndef SORTTESTHELPER_H_INCLUDED
#define SORTTESTHELPER_H_INCLUDED
#include<iostream>
#include <stdlib.h>
#include <ctime>
#include <cassert>
using namespace std;
namespace SortTestHelper{
//生成随机数组 n个元素 每个元素范围从[rangeL,rangeR]
int* generateRandomArray(int n, int rangeL , int rangeR ){
//返回类型为int* 数组 指向数组的第一个元素所在位置
assert (rangeL<=rangeR);
int *arr = new int [n]; //arr指针,指向数int组
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;
}
}
#endif // SORTTESTHELPER_H_INCLUDED
主函数:
#include <iostream>
#include "Student.h"
#include "SortTestHelper.h" //自己设置的头文件 用双引号标出 放在main.cpp的声明中
using namespace std;
template <typename T>
void selectionSort ( T arr[],int n ){……}
int main()
{
int n = 100;
int *arr = SortTestHelper::generateRandomArray(n,0,n);
selectionSort(arr,n);
SortTestHelper::printArray(arr,n);
delete[] arr; //释放new的空间
return 0;
}