C++实现选择算法
用到的工具函数
计算数组的长度
template<class T>
int length(T &arr) {
return sizeof(arr) / sizeof(arr[0]);
}
交换两个变量的值
template<class T>
void swap(T *a, T *b) {
T tmp = *b;
*b = *a;
*a = tmp;
}
选择排序函数
void selectSort(int *arr, int length) {
for (int i = 0; i < length-1; i++) {
int min = arr[i];
int minIndex = i;
for (int j = i + 1; j < length; j++) {
if (min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
swap(&arr[i], &arr[minIndex]);
}
}
测试函数
void testSelectSort() {
int a[] = {-1, 23, -5, -3, -6, 98, 66};
selectSort(a, length(a));
for (int i : a) {
std::cout << i << " ";
}
std::cout << std::endl;
}
测试结果
-6 -5 -3 -1 23 66 98