以下哪种排序算法需要开辟额外的存储空间()
A.选择排序
B.归并排序
C.快速排序
D.堆排序
正确答案是 B
归并算法基本操作是合并两个已经排序的表,因为这两个表是已经排序的,所以若将输出放到第三个表中则该算法可以通过对输入数据一趟排序来完成,因此是需要额外存储空间的
中枪,我脑子里全是错误回答
终于弄懂这个知识点了!!!
在卷的地方,测试要比开发还要开发,又要懂业务又要懂测试,还要懂运维,我都搞不懂现在测试到底是个什么角色了
归并排序和快排都需要开辟额外的空间,只不过归并排序的空间复杂度为O(n),快速排序的空间复杂度为O(logn)
归并排序需要进行归并操作,需要归并数组,即开辟额外的存储空间。而快排的额外存储是由于递归深度引起的,辅助空间存储在O(logn)-O(n)之间,每趟快排辅助的空间存储也是一个临时单元,并不需要额外开辟。
这题主要考察的应该是原地排序的概念。原地排序就是指不申请多余的空间来进行排序,就是在原来的排序数据中比较和交换的排序。希尔排序、冒泡排序、插入排序、选择排序、快速排序、堆排序都属于原地排序。归并排序中一个很重要的部分是两个已排序序列合并的过程,这里需要另外开辟一块新的空间来作为存储这两个已排序序列的临时容器,它并不是原地排序。
归并排序是一个递归的问题,采用分治的思想实现,需要额外的空间来存储临时数据。
归并排序需要开辟一个跟原数组一样大小的存储空间,不断将短的有序序列合并为长的有序序列。最终达到整个序列有序
需要额外空间的排序算法:
归并排序和快排都不需要额外创建数组对象存储数据,也就是不占用堆内存。两者占用的额外存储空间来自调用递归函数时占用的栈内存。因此,快排和归并排序都需要额外的存储空间。包括用递归实现的堆排序同样
列举一款你常用的移动APP,并分析他的最核心功能、满足的需求、超预期的功能以及竞争优势和发展趋势
分析一下,小程序为什么不能分享朋友圈?
请实现KMP算法?
ArrayList和LinkedList的区别,以及各自是怎么实现扩容的?
中枪,我脑子里全是错误回答
终于弄懂这个知识点了!!!
在卷的地方,测试要比开发还要开发,又要懂业务又要懂测试,还要懂运维,我都搞不懂现在测试到底是个什么角色了
归并排序和快排都需要开辟额外的空间,只不过归并排序的空间复杂度为O(n),快速排序的空间复杂度为O(logn)
归并排序需要进行归并操作,需要归并数组,即开辟额外的存储空间。而快排的额外存储是由于递归深度引起的,辅助空间存储在O(logn)-O(n)之间,每趟快排辅助的空间存储也是一个临时单元,并不需要额外开辟。
这题主要考察的应该是原地排序的概念。原地排序就是指不申请多余的空间来进行排序,就是在原来的排序数据中比较和交换的排序。希尔排序、冒泡排序、插入排序、选择排序、快速排序、堆排序都属于原地排序。归并排序中一个很重要的部分是两个已排序序列合并的过程,这里需要另外开辟一块新的空间来作为存储这两个已排序序列的临时容器,它并不是原地排序。
归并排序是一个递归的问题,采用分治的思想实现,需要额外的空间来存储临时数据。
归并排序需要开辟一个跟原数组一样大小的存储空间,不断将短的有序序列合并为长的有序序列。最终达到整个序列有序
需要额外空间的排序算法:
* 计数排序 (counting sort) — O(n+k); 需要 O(n+k) 额外空间
* 合并排序 ( merge sort ) — O(n log n); 需要 O(n) 额外空间
* 二叉排序树排序 ( Binary tree sort ) — O(n log n) 期望时间 ; O(n²) 最坏时间 ; 需要 O(n) 额外空间
* 基数排序 ( radix sort ) — O(n·k); 需要 O(n) 额外空间
归并排序和快排都不需要额外创建数组对象存储数据,也就是不占用堆内存。两者占用的额外存储空间来自调用递归函数时占用的栈内存。因此,快排和归并排序都需要额外的存储空间。包括用递归实现的堆排序同样