1,算法实现原理
设置一个模板函数实现对线性数组进行选择排序,首先记第i(i的初始值为0)个元素为整个数组的最小值,记录其下标为minIndex,遍历除首元素以外的整个数组(j=i+1,j<n,j++),通过逐个比较找到实际最小值,将其下标j记为minIndex,交换i和minIndex对应的元素值,增加i的值,重复上述操作,直至i到达最后一个元素。
2,C++源码
#include <iostream>
#include <algorithm>
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[minIndex]);
}
}
int main() {
int a[10] = {10,9,8,7,6,5,4,3,2,1};
selectionSort(a,10);
for( int i = 0 ; i < 10 ; i ++ )
cout<<a[i]<<" ";
cout<<endl;
return 0;
}