選擇排序的基本思想是:每次從待排序的資料元素集合中選取關鍵字最小(或最大)的資料元素放到資料元素集合的最前(或最後),資料元素集合不斷縮小,當資料元素結合為空的時候選擇排序結束。常用的選擇排序有直接選擇排序和堆排序兩種。堆排序是一種基于完全二叉樹的排序。
直接選擇排序的基本思想是:從待排序的資料元素集合中選取關鍵字最小的資料元素并将它與原始資料元素集合中的第一個資料元素交換位置;然後從不包括第一個位置上資料元素中選取關鍵字最小的資料元素并将它與原始資料元素集合中的第二個資料元素交換位置;如此重複,直到資料元素集合中隻剩一個資料元素為止。
直接選擇排序算法是一種不穩定的排序方法。
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);
}
}