Hello 算法 1.0.0b1 C++版判断规则,例如数字大小、字符 ASCII 码顺序、自定义规则; Figure 11‑1. 排序中不同的元素类型和判断规则 11.1.1. 评价维度 排序算法主要可根据 稳定性、就地性、自适应性、比较类 来分类。 稳定性 ‧「稳定排序」在完成排序后,不改变 相等元素在数组中的相对顺序。 ‧「非稳定排序」在完成排序后,相等元素在数组中的相对位置 可能被改变。 假设我们有一个存储学生信息的表格,第0 码力 | 187 页 | 14.71 MB | 1 年前3
 Hello 算法 1.0.0b2 C++版外辅助数组,节约内存;并且 一般情况下,原地排序的数据搬运操作较少,运行速度也更快。 稳定性:「稳定排序」在完成排序后,相等元素在数组中的相对顺序 不会发生改变。假设我们有一个存储学生 信息的表格,第 1, 2 列分别是姓名和年龄。那么在以下示例中,「非稳定排序」会导致输入数据的有序性丢失。 稳定性是排序算法很好的特性,在多级排序中是必须的。 # 输入数据是按照姓名排序好的 # (name0 码力 | 197 页 | 15.72 MB | 1 年前3
 Hello 算法 1.1.0 C++ 版于大数据量的情况,运行效率显得尤为重要。 就地性:顾名思义,原地排序通过在原数组上直接操作实现排序,无须借助额外的辅助数组,从而节省内存。 通常情况下,原地排序的数据搬运操作较少,运行速度也更快。 稳定性:稳定排序在完成排序后,相等元素在数组中的相对顺序不发生改变。 稳定排序是多级排序场景的必要条件。假设我们有一个存储学生信息的表格,第 1 列和第 2 列分别是姓名和 年龄。在这种情况下,非稳定排序可能导致输入数据的有序性丧失: 如其他数据结构和算法一样,没有一种排序算法能够同时满足所有这些条件。在实际应用中,我们需要 根据数据的特性来选择合适的排序算法。 ‧ 图 11‑19 对比了主流排序算法的效率、稳定性、就地性和自适应性等。 图 11‑19 排序算法对比 2. Q & A Q:排序算法稳定性在什么情况下是必需的? 在现实中,我们有可能基于对象的某个属性进行排序。例如,学生有姓名和身高两个属性,我们希望实现一 个多级排序:先按照姓名进行排序,得到0 码力 | 379 页 | 18.47 MB | 1 年前3
 Hello 算法 1.0.0b5 C++版对于大数据量情况,运行效率显得尤为重要。 就地性:顾名思义,「原地排序」通过在原数组上直接操作实现排序,无须借助额外的辅助数组,从而节省内 存。通常情况下,原地排序的数据搬运操作较少,运行速度也更快。 稳定性:「稳定排序」在完成排序后,相等元素在数组中的相对顺序不发生改变。 稳定排序是多级排序场景的必要条件。假设我们有一个存储学生信息的表格,第 1 列和第 2 列分别是姓名和 年龄。在这种情况下,「 条件。在实际应用中,我们需要 根据数据的特性来选择合适的排序算法。 ‧ 图 11‑19 对比了主流排序算法的效率、稳定性、就地性和自适应性等。 第 11 章 排序 hello‑algo.com 257 图 11‑19 排序算法对比 2. Q & A � 排序算法稳定性在什么情况下是必须的? 在现实中,我们有可能是在对象的某个属性上进行排序。例如,学生有姓名和身高两个属性, 我们希望实现一个多级排序/0 码力 | 377 页 | 30.69 MB | 1 年前3
 Hello 算法 1.0.0 C++版于大数据量的情况,运行效率显得尤为重要。 就地性:顾名思义,「原地排序」通过在原数组上直接操作实现排序,无须借助额外的辅助数组,从而节省内 存。通常情况下,原地排序的数据搬运操作较少,运行速度也更快。 稳定性:「稳定排序」在完成排序后,相等元素在数组中的相对顺序不发生改变。 稳定排序是多级排序场景的必要条件。假设我们有一个存储学生信息的表格,第 1 列和第 2 列分别是姓名和 年龄。在这种情况下,「 条件。在实际应用中,我们需要 根据数据的特性来选择合适的排序算法。 ‧ 图 11‑19 对比了主流排序算法的效率、稳定性、就地性和自适应性等。 第 11 章 排序 hello‑algo.com 257 图 11‑19 排序算法对比 2. Q & A Q:排序算法稳定性在什么情况下是必需的? 在现实中,我们有可能基于对象的某个属性进行排序。例如,学生有姓名和身高两个属性,我们希望实现一0 码力 | 378 页 | 17.59 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 C++ 版于大数据量的情况,运行效率显得尤为重要。 就地性:顾名思义,原地排序通过在原数组上直接操作实现排序,无须借助额外的辅助数组,从而节省内存。 通常情况下,原地排序的数据搬运操作较少,运行速度也更快。 稳定性:稳定排序在完成排序后,相等元素在数组中的相对顺序不发生改变。 稳定排序是多级排序场景的必要条件。假设我们有一个存储学生信息的表格,第 1 列和第 2 列分别是姓名和 年龄。在这种情况下,非稳定排序可能导致输入数据的有序性丧失: 他数据结构和算法一样,没有一种排序算法能够同时满足所有这些条件。在实际应用中,我们需要根据 数据的特性来选择合适的排序算法。 ‧ 图 11‑19 对比了主流排序算法的效率、稳定性、就地性和自适应性等。 图 11‑19 排序算法对比 2. Q & A Q:排序算法稳定性在什么情况下是必需的? 在现实中,我们有可能基于对象的某个属性进行排序。例如,学生有姓名和身高两个属性,我们希望实现一 个多级排序:先按照姓名进行排序,得到0 码力 | 379 页 | 18.48 MB | 10 月前3
 Hello 算法 1.0.0b4 C++版对于大数据量情况,运行效率显得尤为重要。 就地性:顾名思义,「原地排序」通过在原数组上直接操作实现排序,无需借助额外的辅助数组,从而节省内 存。通常情况下,原地排序的数据搬运操作较少,运行速度也更快。 稳定性:「稳定排序」在完成排序后,相等元素在数组中的相对顺序不发生改变。稳定排序是优良特性,也是 多级排序场景的必要条件。 假设我们有一个存储学生信息的表格,第 1, 2 列分别是姓名和年龄。在这种情况下,「非稳定排序」可能导致 如其他数据结构和算法一样,没有一种排序算法能够同时满足所有这些条件。在实际应用中,我们需要 根据数据的特性来选择合适的排序算法。 Figure 11‑19. 排序算法对比 11.11.1. Q & A � 排序算法稳定性在什么情况下是必须的? 在现实中,我们有可能是在对象的某个属性上进行排序。例如,学生有姓名和身高两个属性, 我们希望实现一个多级排序/ 先按照姓名进行排序,得到 (A, 180) (B, 185)0 码力 | 343 页 | 27.39 MB | 1 年前3
共 7 条
- 1
 













