简单选择排序(Simple Selection Sort),一趟简单选择排序的操作为:通过n - i 次关键字间的比较,从n - i + 1个记录中选出关键字最小的记录,并和第i(1 <= i <= n)个记录交换之。时间复杂度为O(n^2)。
// 简单选择排序
void CSelectionSort::SimpleSelectionSort(void)
{
const int count = 9;
int L[count] = {0, 49, 38, 65, 97, 76, 13, 27, 49};
for (int i = 0; i < count; ++i)
{
int j = SelectMinKey(L, count, i);
if (i != j)
{
int temp = L[i];
L[i] = L[j];
L[j] = temp;
}
}
//打印排序结果。
for (int i = 0; i < count; ++ i)
{
cout << L[i] << "\t";
}
cout << endl;
}
// 简单选择排序之选最小值
int CSelectionSort::SelectMinKey(int L[], int count, int i)
{
int index = i;
for (int j = i + 1; j < count; j++)
{
if (L[j] < L[index])
index = j;
}
return index;
}
简单选择排序是每次都要选取待排序序列里面,记录关键值最小的元素索引。然后和本次待排序序列的第一个元素交换。而起泡排序是只要发现相临的两个元素逆序就交换。