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
Sorting 插入排序、冒泡排序和选择排序的效率?_Sorting_Selection_Bubble Sort_Insertion Sort - Fatal编程技术网

Sorting 插入排序、冒泡排序和选择排序的效率?

Sorting 插入排序、冒泡排序和选择排序的效率?,sorting,selection,bubble-sort,insertion-sort,Sorting,Selection,Bubble Sort,Insertion Sort,我已经写下了插入排序比选择排序快,选择排序比冒泡排序快,并且所有3个的运行时间都在^2上,但是我能说些什么来比较它们呢 您可以将排序算法与以下标准进行比较: 时间复杂度Big-O表示法。您应该注意,最佳情况、最坏情况和平均运行时可能具有不同的时间复杂性。例如,“气泡排序的最佳情况”仅处于启用状态,使其在原始列表基本按顺序排列时比“选择排序”更快—没有太多元素错位。 内存复杂性。随着n的增长,对列表进行排序需要多少内存? 稳定性排序是否保留具有等效排序值的元素的相对顺序?例如,如果按价格对目录项列

我已经写下了插入排序比选择排序快,选择排序比冒泡排序快,并且所有3个的运行时间都在^2上,但是我能说些什么来比较它们呢

您可以将排序算法与以下标准进行比较:

时间复杂度Big-O表示法。您应该注意,最佳情况、最坏情况和平均运行时可能具有不同的时间复杂性。例如,“气泡排序的最佳情况”仅处于启用状态,使其在原始列表基本按顺序排列时比“选择排序”更快—没有太多元素错位。 内存复杂性。随着n的增长,对列表进行排序需要多少内存? 稳定性排序是否保留具有等效排序值的元素的相对顺序?例如,如果按价格对目录项列表进行排序,则某些元素的价格可能相等。如果目录最初是按项目名称的字母顺序排序的,则所选排序算法是否会在每组同等价格的项目中保留字母顺序。 所需的最佳/最差/平均比较次数。当比较操作非常昂贵时,这一点很重要。例如:比较通过模拟或其他复杂计算计算效率的替代设计的效率。 所需的最佳/最差/平均交换操作数。当交换操作很昂贵时,这一点很重要。例如:分拣必须在船舶甲板上实际移动的集装箱 代码大小。冒泡排序以其较小的代码占用而闻名。
有几种方法可以看到插入/选择/气泡排序都在n^2时间内运行

它们使用嵌套循环:n个外部循环,每个循环平均有n/2个内部循环 它们比较所有元素对:有n*n-1/2对
下面是对运行的一些详细分析

bubblesort的优势在于检测已排序列表的速度:

BubbleSort最佳案例场景:打开

然而,即使在这种情况下,插入排序也获得了更好/相同的性能

Bubblesort或多或少只适合于理解和/或教授sortalgorithm的机制,但由于其复杂性,目前在编程中找不到合适的用法

On²

这意味着它的效率在超过少量元素的列表上急剧降低