思路:
使用两个索引:begin指向数组第一个元素,end指向数组最后一个元素。规定每次循环begin所指向的值为最小值,end所指向的值为最大值。在for循环中,使数组的每个元素和最大最小值比较,符合if条件就进行交换。每次循环完就选出一个最小值和最大值放在开头和末尾。从两边往中间移动。时间复杂度O(N^2)
#include<iostream>
using namespace std;
void SelectSort(int *arr, int size)
{
int begin = 0, end = size - 1;
while (begin < end)
{
int min = begin;
int max = end;
for (int i = begin; i <= end; i++)
{
if (arr[i] < arr[min])
{
swap(arr[i], arr[min]);
}
if (arr[i] > arr[max])
{
swap(arr[i], arr[max]);
}
}
begin++;
end--;
}
}