← SEARCHABLE ARCHIVE
Algorithm · 2026-07-05

排序算法比较

选择排序、合并排序和快速排序之间的区别

INTERACTIVE READING MODE →

该博客上撰写的文章是出于教学目的而创建的。 另外,文章中的信息可能不正确,请谨慎。

排序是将数据按照一定标准排列的过程。 除了升序数字顺序外,您还可以使用多个条件,例如运行状况、名称或创建时间。

选择排序

找到剩余部分中的最小值并将其替换为前一个部分。

for (int i = 0; i < Count - 1; ++i)
{
    int MinIndex = i;

    for (int j = i + 1; j < Count; ++j)
    {
        if (Values[j] < Values[MinIndex])
        {
            MinIndex = j;
        }
    }

    std::swap(Values[i], Values[MinIndex]);
}

实现起来很容易,但是比较次数O(N²)因此,它不适合大数据。

归并排序

将数组分成两半,对每个数组进行排序,然后合并它们。 时间复杂度为O(N log N)它可以实现为稳定排序,但合并需要临时内存。

快速排序

根据枢轴划分小值和大值并重新排列每个部分。 平均值是O(N log N)然而,如果枢轴选择仍然很糟糕,O(N²)你可以去

在实际的 C++ 代码中,您不需要自己重新创建对齐方式,std::sort和std::stable_sort先用。

std::sort(Units.begin(), Units.end(),
    [](const Unit& A, const Unit& B)
    {
        return A.Speed > B.Speed;
    });

通过研究直接实现算法和在产品代码中使用经过验证的标准库具有不同的目的。