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_Bucket Sort - Fatal编程技术网

Algorithm 为什么在桶排序中使用插入排序?

Algorithm 为什么在桶排序中使用插入排序?,algorithm,sorting,insertion-sort,bucket-sort,Algorithm,Sorting,Insertion Sort,Bucket Sort,桶排序是一种线性时间排序 为什么我们在其中使用插入排序?我们知道插入排序需要O(n2)时间。 为什么我们不能在它里面使用任何线性排序? 正如我们所看到的,当在每个bucket中使用插入排序O(n2)时。桶排序的总复杂度是多少? 为什么不使用O(nlogn)排序,例如合并排序或快速排序 插入排序需要O(n2)时间 这还不是全部。对于部分排序的数组,插入排序性能良好,它具有线性时间复杂度 每个条目离其最终位置不远的数组是部分排序数组的典型示例。桶排序就是这种情况。桶中插入排序的桶排序只有在每个桶中只

桶排序是一种线性时间排序

为什么我们在其中使用插入排序?我们知道插入排序需要O(n2)时间。 为什么我们不能在它里面使用任何线性排序? 正如我们所看到的,当在每个bucket中使用插入排序O(n2)时。桶排序的总复杂度是多少? 为什么不使用O(nlogn)排序,例如合并排序或快速排序

插入排序需要O(n2)时间

这还不是全部。对于部分排序的数组,插入排序性能良好,它具有线性时间复杂度


每个条目离其最终位置不远的数组是部分排序数组的典型示例。桶排序就是这种情况。

桶中插入排序的桶排序只有在每个桶中只有几个项目时才合理。当只有几个项目时,插入排序就可以了

在现实生活中,这种情况并不经常发生。通常是在我们希望数据均匀分布的时候,因为我们是按散列顺序排序的

Bucket sort在整个排序时最常用,也就是说,Bucket根本不需要排序,您只需将每个项附加到Bucket列表中即可

有时,我们会进行自上而下的基数排序,这类似于桶排序,然后对每个桶进行桶排序。与保留非emtpy存储桶的位掩码相结合,当排序键是32位整数时,这是一种非常快速的排序方法


您还可以通过在不同的位范围上重复进行桶排序,并将项目附加到每个桶中,来执行自底向上的基数排序。这种桶式排序是稳定的,因此,当您按高位进行桶式排序时,通过按低位排序得到的上一个排序会打破关系。

为什么我们不在桶式排序中使用任何线性排序(例如,计数、基数等)?