生成随机数组的函数:
#include <iostream>
#include <ctime>
#include <cassert>
using namespace std;
namesapce 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;
}
}
}
上述代码创建了数组空间,所以在调用结束后,使用delete[] arr 释放内存。
输出函数(模板)
Template<typename T>
void printArray(T arr[]),int n){
for(int i=0; i<n;i++){
cout<<arr[i]<<" ";
}
cout<<endl;
return;
}
选择排序函数:时间复杂度(o(n2))
#include <iostream>
using namespace std;
Template <typename T>;
void selectionSort(T arr[],int n){
for(int i=0;i<n;i++){
int minIndex=i;
for(int j=i+1;j<n;j++){
if(arr[j]<arr[minIndex]){
minIndex=j;
}
}
swap(arr[i],arr[minIndes]);
}
}
插入排序函数:
void insertSort(T arr[],int n){
for (int i=1;i<n;i++){
for(int j=i;j>0;j--){
if(arr[j]<arr(j-1)){
swap(arr[j],arr[j-1]);
}
else
break;
}
}
}
插入排序的改进:时间复杂度(o(n2))
void insertSort(T arr[],int n){
for (int i=1;i<n;i++){
T e = arr[i];
int j;
for(j=i;j>0&&arr[j-1]>e;j--){
arr[j]=arr[j-1];
}
arr[j]=e
}
}
冒泡排序函数:
希尔排序函数:
这里写代码片
测试函数运行时间函数:
template <typename T>
void testsort(string sortName,void(*sort)(T[],int),T arr[],int n){
clock_t startTime = clock();
sort(arr,n);
clock_t endtTime = clock();
cout<<sortNmae<<":"<<double(endTime-startTime)/CLOCKS_PER_SEC<<" s"<<endl;
return
}
测试排序函数的有效性:
bool isSorted(T arr[],int n){
for(int i=0;i<n-1;i++)
if(arr[i]>arr[i+1])
return false;
return true;
}
复制数组的函数:
int* copyIntArray (int a[],int n){
int* arr=new int[n];
copy(a,a+n,arr);
return arr;
}