C++中模板选择排序算法
建立模板,对char数组和int数组进行选择排序,
test1 和test2分别测试
时间复杂度O(n2)
跟爱护据状态无关,不稳定,例如
6,4,7,6,2,4;
第一次6跟2换位置,不稳定
在这里插入代码片
#include<iostream>
#include<string>
using namespace std;
template<typename T>
void Swap(T &a,T &b) {
T temp = a;
a = b;
b = temp;
}
template<class T>
void Qsort(T a[], int len) {
for (int i = 0; i < len; i++) {
int min = i;
for (int j = i+1; j < len; j++) {
if (a[min] > a[j])
min = j;
}
Swap(a[min], a[i]);
}
}
template<class T>
void MyPrint(T arr[],int len) {
for (int i = 0; i < len; i++) {
cout << arr[i] << "";
}
cout << endl;
}
void test() {
int intArray[] = {2,1,5,4,7,9};
int num = sizeof(intArray) / sizeof(int);
Qsort(intArray,num);
MyPrint(intArray,num);
}
void test2() {
char charArray[] = "asdfghb";
int num2 = sizeof(charArray) / sizeof(char);
Qsort(charArray, num2);
MyPrint(charArray, num2);
}
int main() {
test();
test2();
system("pause");
return 0;
}