排序基础教程文档

收录于 2023-04-20 00:10:05 · بالعربية · English · Español · हिंदीName · 日本語 · Русский язык · 中文繁體

排序是指以特定格式排列数据。排序算法指定以特定顺序排列数据的方式。最常见的顺序是数字或字典顺序。
排序的重要性在于,如果数据以排序方式存储,则数据搜索可以优化到非常高的水平。排序也用于以更易读的格式表示数据。以下是现实生活场景中的一些排序示例-
电话簿-电话簿存储按姓名排序的人的电话号码,以便可以轻松搜索姓名。 字典-字典按字母顺序存储单词,以便搜索任何单词变得容易。

就地排序和非就地排序

排序算法可能需要一些额外的空间来比较和临时存储少数数据元素。这些算法不需要任何额外的空间,并且据说排序发生在原地,或者例如,在数组本身内发生。这称为 就地排序。冒泡排序是就地排序的一个例子。
但是,在某些排序算法中,程序需要大于或等于被排序元素的空间。使用相等或更多空间的排序称为 非就地排序。合并排序是非就地排序的一个例子。

稳定和不稳定排序

如果一种排序算法在对内容进行排序后,不改变它们出现的相似内容的顺序,则称为 稳定排序
稳定排序
如果排序算法在对内容进行排序后,改变了它们出现的相似内容的顺序,则称为 不稳定排序
不稳定排序
当我们希望保持原始元素的序列时,算法的稳定性很重要,例如在元组中。

自适应和非自适应排序算法

如果排序算法利用了待排序列表中已经"排序"的元素,则称该排序算法是自适应的。也就是说,如果源列表中的某些元素已经排序,则在进行排序时,自适应算法会考虑到这一点,并尽量不对它们重新排序。
非自适应算法是一种不考虑已排序元素的算法。他们试图强制每个元素重新排序以确认它们的排序。

递增顺序

如果连续元素大于前一个元素,则称一系列值按 递增顺序。例如,1、3、4、6、8、9 是按递增顺序排列的,因为每个下一个元素都大于前一个元素。

递减顺序

如果连续元素小于当前元素,则称值序列按 递减顺序。例如,9、8、6、4、3、1 按降序排列,因为每个下一个元素都小于前一个元素。

非递增顺序

如果连续元素小于或等于序列中的前一个元素,则称一个值序列按 非递增顺序。当序列包含重复值时,会出现此顺序。例如,9、8、6、3、3、1 是非递增顺序的,因为每个下一个元素都小于或等于(在 3 的情况下)但不大于任何前一个元素。

非递减顺序

如果连续元素大于或等于序列中的前一个元素,则称一个值序列按 非递减顺序。当序列包含重复值时,会出现此顺序。例如,1、3、3、6、8、9 是非递减顺序,因为每个下一个元素都大于或等于(在 3 的情况下)但不小于前一个。