C语言实现-选择排序

选择排序算是比较简单的一种排序了。它的复杂度非常稳定,无论是最好(有序)还是最差(无序)都是 $O(n^{2})$
选择排序就是每次选择这列数的最值放到首位,直到遍历结束。
可视化: 现在来用 c 语言实现:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
void sort(int *array, int size)
{
    for (int i = 0; i < size - 1; i++)
    {
        int max = array[i];
        int temp, target;
        for (int j = i + 1; j < size; j++)
            if (array[j] > max)
                target = j;
        temp = array[target];
        array[target] = array[i];
        array[i] = temp;
    }
}

假设我们要从大到小排序:
i 遍历到 size - 1即可,因为遍历到最后一个一定是最小的。

这里假定 i 为最大值然后对其后面遍历找出能比 i 还大的进行替换。
target 标记的是索引值,为后面进行替换打基础。

萌ICP备20241614号