选择最小的把它放到前面
搜索找到最小的
把它放到第一位
可以通过移动元素来获得空间,但最快的方式是直接交换
重复找出第二小的 、第三小的
void SelectionSort(Vector<int> &arr)
{
for (int i = 0; i < arr.size()-1; i++) {
int minIndex = i;
for (int j = i+1; j < arr.size(); j++) {
if (arr[j] < arr[minIndex])
minIndex = j;
}
Swap(arr[i], arr[minIndex]);
}
时间复杂度
第一次进行N-1次比较,第二次N-2次......
sum = N-1+N-2+...+2+1=N(N-1)/2
O(N的平方)