选择排序的基本思想是:每次从待排序的数据元素集合中选取关键字最小(或最大)的数据元素放到数据元素集合的最前(或最后),数据元素集合不断缩小,当数据元素结合为空的时候选择排序结束。常用的选择排序有直接选择排序和堆排序两种。堆排序是一种基于完全二叉树的排序。
直接选择排序的基本思想是:从待排序的数据元素集合中选取关键字最小的数据元素并将它与原始数据元素集合中的第一个数据元素交换位置;然后从不包括第一个位置上数据元素中选取关键字最小的数据元素并将它与原始数据元素集合中的第二个数据元素交换位置;如此重复,直到数据元素集合中只剩一个数据元素为止。
直接选择排序算法是一种不稳定的排序方法。
下面给出示例代码:
void selectSort(int data[], int size)
{
int small;
int temp;
for (int i = 0; i < size - 1; i++)
{
small = i;
for (int j = i + 1; j < size; j++)
{
if (data[j] < data[small])
{
small = j;
}
}
if (small != i)
{
temp = data[small];
data[small] = data[i];
data[i] = temp;
}
print(data, size);
}
}