1、在我看来,选择排序就像我们第一个想到的排序方法。比如站队,都是从矮的一个接着一个慢慢到高的站。首先,最矮的站过来,在所有人里找最矮的那个,然后再找第二矮的,。。。。。。。直到把这个班人都站完。
排序算法正如此:
#include <iostream>
using namespace std;
template <typename T>
void selectionSort(T arr[],int n)
{
for (int i = 0; i < n; i++) {//寻找[i,n)区间里的最小值
int minIndex = i;//默认认为未排序的第一个数为最小值
for (int j = i + 1; j < n; j++) {//寻找[i+1,n)区间的最小值
if (arr[j] < arr[minIndex]) {//比较,若后面遍历到的数比第一个数小就将值赋给第一个位置Index
minIndex = j ;//赋值
}
}
swap(arr[i], arr[minIndex]);//将[i+1,n)区间的最小值与Index位置交换
}
}
int main() {
int arr[6] = { 3,43,2,4,5,6 };
selectionSort(arr, 6);
for (int i = 0; i < 6; i++) {
cout << arr[i] << " ";
cout << endl;
}
return 0;
}
主要思想就是找最小值,把最小值依次放在数组中。