選擇排序 -
首先初始化最小元素索引值爲首元素,依次遍歷待排序數列,若遇到小於該最小索引位置處的元素則刷新最小索引爲該較小元素的位置,直至遇到尾元素,結束一次遍歷,並將最小索引處元素與首元素交換;然後,初始化最小索引值爲第二個待排序數列元素位置,同樣的操作,可得到數列第二個元素即爲次小元素;以此類推。
時間複雜度:O(N2) 穩定性:不穩定
/*選擇排序*/
void selectSort(vector<int> &arr, int bgn, int end)
{
for (int i = bgn; i < end; ++i)
{
int minIndex = i;
for (int j = i + 1; j < end; ++j)
{
if (arr[j] < arr[minIndex])
minIndex = j;
}
if (minIndex != i)
mySwap(&arr[i], &arr[minIndex]);
}
}