/*
选择排序
input:输入数组
lenght:数组长度
Completion_position:已完成排序的位置
min_place:最小值位置
now_place:当前位置
选择排序为不稳定排序(如:2(1) 2(2) 1,最终排序结果为1 2(2) 2(1),2(2)在2(1)前)
时间复杂度均为O(n^2)
*/
void selection_sort(int *input, int lenght)
{
int completion_position, min_place, now_place, temp;
for (completion_position = 0; completion_position < lenght - 1; completion_position++) // 开始已完成排序的位置为0
// 当到达最后一位时,它以是最大值,无需排序
{
min_place = completion_position;
for (now_place = completion_position + 1; now_place < lenght; now_place++) // 在已完成排序的位置后找到最小值位置
{
min_place = input[min_place] > input[now_place] ? now_place : min_place;
}
// 将数据进行交换
temp = input[completion_position];
input[completion_position] = input[min_place];
input[min_place] = temp;
}
}
选择排序实现
最新推荐文章于 2024-07-21 13:38:21 发布