Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 选择或插入排序在学术环境之外有用吗?_Algorithm_Sorting_Insertion Sort_Selection Sort - Fatal编程技术网

Algorithm 选择或插入排序在学术环境之外有用吗?

Algorithm 选择或插入排序在学术环境之外有用吗?,algorithm,sorting,insertion-sort,selection-sort,Algorithm,Sorting,Insertion Sort,Selection Sort,这些排序算法在实际应用中有什么用处吗 或者它只是一个复杂度为n^2的排序算法的基本示例 有人能举例说明它的用法吗 插入排序是对非常小的数组进行排序的最快排序算法之一 实际上,当要排序的子数组低于某个阈值时,许多quicksort/mergesort实现停止,然后对这些小数组使用插入排序 选择排序在实践中很少使用。插入排序是对非常小的数组进行排序的最快排序算法之一 实际上,当要排序的子数组低于某个阈值时,许多quicksort/mergesort实现停止,然后对这些小数组使用插入排序 选择排序在实

这些排序算法在实际应用中有什么用处吗

或者它只是一个复杂度为n^2的排序算法的基本示例


有人能举例说明它的用法吗

插入排序是对非常小的数组进行排序的最快排序算法之一

实际上,当要排序的子数组低于某个阈值时,许多quicksort/mergesort实现停止,然后对这些小数组使用插入排序


选择排序在实践中很少使用。

插入排序是对非常小的数组进行排序的最快排序算法之一

实际上,当要排序的子数组低于某个阈值时,许多quicksort/mergesort实现停止,然后对这些小数组使用插入排序


选择排序在实践中很少使用。

插入排序实际上对于较小的输入大小非常快,因为其复杂性中隐藏的常数很小。对于某些大小,插入排序比合并排序快

因此,对于许多流行的排序算法,当数组大小变得非常小时,使用插入排序


底线:对于足够小的输入,ON2算法在实践中可能比ON*logN算法更快,这是由于隐藏常数。

对于小的输入,插入排序实际上非常快,因为其复杂性中隐藏常数很小。对于某些大小,插入排序比合并排序快

因此,对于许多流行的排序算法,当数组大小变得非常小时,使用插入排序


底线:对于足够小的输入,由于隐藏常数,ON2算法在实践中可能比ON*logN算法更快。

是的,插入排序广泛应用于工业应用中。这主要是因为一些流行的C++标准库,如实现排序例程,作为插入排序和深度限制的快速排序的组合。 其思想是,插入排序在几乎排序的数组上工作得非常快,而对于快速排序的直接实现,排序输入会导致最坏的情况。因此,组合算法首先应用类似快速排序的算法对输入进行部分排序,然后调用插入排序结束


如果输入大小足够小但大于五个元素,则默认情况下插入排序也用于排序,因为大小是,插入排序广泛用于工业应用。这主要是因为一些流行的C++标准库,如实现排序例程,作为插入排序和深度限制的快速排序的组合。 其思想是,插入排序在几乎排序的数组上工作得非常快,而对于快速排序的直接实现,排序输入会导致最坏的情况。因此,组合算法首先应用类似快速排序的算法对输入进行部分排序,然后调用插入排序结束


如果输入大小足够小但大于五个元素,则默认情况下,插入排序也用于排序,如大小HP/Microsoft std::sort所示,如果深度太深,则使用深度参数进行快速排序,并切换到heapsort

HP/Microsoft std::stable_sort是一种。它使用插入排序创建由32个排序元素组成的组,然后使用自底向上的合并排序合并这些组


另一方面,据我所知,在任何公共库中都没有使用自顶向下的合并排序。相反,内部内存和外部磁盘合并排序的公共库版本都是自底向上合并排序的变体,如timsort。然而,在教室环境或网站文章中,您会看到更多自上而下的合并排序示例,而不是自下而上的合并排序。

HP/Microsoft std::sort是一种带有深度参数的快速排序,如果深度太深,它会切换到heapsort

HP/Microsoft std::stable_sort是一种。它使用插入排序创建由32个排序元素组成的组,然后使用自底向上的合并排序合并这些组


另一方面,据我所知,在任何公共库中都没有使用自顶向下的合并排序。相反,内部内存和外部磁盘合并排序的公共库版本都是自底向上合并排序的变体,如timsort。然而,在课堂环境或网站文章中,您会看到更多自上而下的合并排序示例,而不是自下而上的合并排序。

定义真实世界的应用程序其用法示例:向计算机科学学生教授效率和排序算法真实世界的应用程序如人们在哪里使用它?在哪种情况下我们应该使用它?有任何软件或模块可以使用这个吗?@cricket\u 007我们知道这一点。这就是我提出这个问题的原因。谢谢你的回复。@Vhortex和cricket_007:如果你不在乎,那很好。T
这个问题是正确的,如果你没有考虑过,那没关系。定义真实世界的应用程序它的用法示例:向计算机科学学生教授效率和排序算法真实世界的应用程序,比如人们在哪里使用它?在哪种情况下我们应该使用它?有任何软件或模块可以使用这个吗?@cricket\u 007我们知道这一点。这就是我提出这个问题的原因。谢谢你的回复。@Vhortex和cricket_007:如果你不在乎,那很好。这个问题是有道理的,如果你没有考虑过,那没关系。