思路
选择排序是每一趟从待排序的元素中选出关键字最小的元素,放在已排序好的序列的最后。
选择排序适合从大量的元素中选择一部分排序元素,例如从10000个元素中选择出大小为前10 的元素就适合用选择排序。
实现
void selectSort(int R[], int n)
{
int i, j, k;
for (i = 0; i < n - 1; i++)
{
k = i;
for (j = i + 1; j < n; j++)//从当前无序区选出最小的
{
if (R[j] < R[k])
{
k = j;//k记下位置
}
}
if (k != i)
{
swap(R[i], R[k]);//交换
}
}
}
测试
int main()
{
int R[] = { 4,8,9,6,2,1,3,7 };
selectSort(R, 8);
for (int i = 0; i < 8; i++)
{
cout << R[i] << " ";
}
return 0;
}
完整代码
#include <iostream>
using namespace std;
void selectSort(int R[], int n)
{
int i, j, k;
for (i = 0; i < n - 1; i++)
{
k = i;
for (j = i + 1; j < n; j++)//从当前无序区选出最小的
{
if (R[j] < R[k])
{
k = j;//k记下位置
}
}
if (k != i)
{
swap(R[i], R[k]);//交换
}
}
}
int main()
{
int R[] = { 4,8,9,6,2,1,3,7 };
selectSort(R, 8);
for (int i = 0; i < 8; i++)
{
cout << R[i] << " ";
}
return 0;
}