排序是指以特定格式排列数据。排序算法指定以特定顺序排列数据的方式。最常见的顺序是数字或字典顺序。
排序的重要性在于,如果数据以排序方式存储,则可以将数据搜索优化到非常高的水平。排序还用于以更易读的格式表示数据。以下是一些在现实生活场景中排序的例子 -
电话簿- 电话簿存储按姓名排序的人的电话号码,以便可以轻松搜索姓名。
字典- 字典按字母顺序存储单词,以便搜索任何单词变得容易。
就地排序和非就地排序
排序算法可能需要一些额外的空间来比较和临时存储少数数据元素。这些算法不需要任何额外的空间,并且排序被称为就地发生,或者例如在数组本身内发生。这称为就地排序。冒泡排序是就地排序的一个例子。
但是,在某些排序算法中,程序需要大于或等于被排序元素的空间。使用相等或更多空间的排序称为非就地排序。合并排序是非就地排序的一个例子。
稳定和不稳定排序
如果排序算法在对内容进行排序后,不改变它们出现的相似内容的顺序,则称为稳定排序。
如果排序算法在对内容进行排序后,改变了它们出现的相似内容的顺序,则称为不稳定排序。
当我们希望保持原始元素的序列时,算法的稳定性很重要,例如在元组中。
自适应和非自适应排序算法
如果排序算法利用要排序的列表中已经“排序”的元素,则称该排序算法是自适应的。也就是说,如果源列表中的某些元素已经排序,则在排序时,自适应算法会考虑到这一点,并尽量不重新排序它们。
非自适应算法是一种不考虑已经排序的元素的算法。他们试图强制每个元素重新排序以确认它们的排序。
重要条款
在讨论排序技术时通常会创造一些术语,这里是对它们的简要介绍 -
递增顺序
如果连续元素大于前一个元素,则称一系列值按递增顺序排列。例如,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 的情况下)但不小于前一个元素。
数据结构考研(数据结构考研真题)
评论列表 人参与