void selectionSort(T arr[], int n){
|
|
for(int i = 0 ; i < n ; i ++){
|
|
for( int j = i + 1 ; j < n ; j ++ )
|
|
if( arr[j] < arr[minIndex] )
|
|
swap( arr[i] , arr[minIndex] );
|
|
int a[10] = {10,9,8,7,6,5,4,3,2,1};
|
|
for( int i = 0 ; i < 10 ; i ++ )
|
|
float b[4] = {4.4,3.3,2.2,1.1};
|
|
for( int i = 0 ; i < 4 ; i ++ )
|
|
string c[4] = {"D","C","B","A"};
|
|
for( int i = 0 ; i < 4 ; i ++ )
|
|
}
此外,我们可以自定义一个类型,对其进行排序,声明一个头文件,
#ifndef INC_02_SELECTION_SORT_USING_TEMPLATE_STUDENT_H
|
|
#define INC_02_SELECTION_SORT_USING_TEMPLATE_STUDENT_H
|
|
// 重载小于运算法,定义Student之间的比较方式
|
|
bool operator<(const Student& otherStudent){
|
|
return score != otherStudent.score ?
|
|
score > otherStudent.score : name < otherStudent.name;
|
|
friend ostream& operator<<(ostream &os, const Student &student){
|
|
os<<"Student: "<<student.name<<" "<<student.score<<endl;
|
|
#endif
3,随机生成算法测试用例
建立一个头文件,如下:
#ifndef SORTTESTHELPER_H_INCLUDED
#define SORTTESTHELPER_H_INCLUDED
#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;
}
}
#endif // SORTTESTHELPER_H_INCLUDED
主函数:
int main() {
// 测试模板函数,传入整型数组
int N = 20000;
int *arr = SortTestHelper::generateRandomArray(N,0,N);
selectionSort(arr,N);
for(int i=0;i<N;i++)
cout<<arr[i]<<" ";
cout<<endl;
//SortTestHelper::printArray(arr,N);
delete[] arr;
return 0;
}随机生成10000个数排序
|