提问人:bib 提问时间:11/17/2023 最后编辑:bib 更新时间:11/18/2023 访问量:18
如何从快速排序和插入排序创建混合函数?
how to create an hybrid function from quicksort and insertion sort?
问:
我想设计一种新的排序算法,它结合了快速排序和插入排序的优点。一开始我不知道我的数组是否被排序。因此,我需要在快速排序和插入之间选择一个有效的方法才能开始。我会选择快速排序。在执行过程中,我如何决定是否从快速排序切换到插入排序? 因此,我认为我需要在快速排序的新排序算法中添加几乎相同的代码,并且需要添加一个新的基本情况。我认为这种关系应该反映输入数组的长度和递归深度之间的关系,这种关系对于行为良好的快速排序是有效的。
因此,由于快速排序中的最大树深度(递归)是 n,min 是 logn,我的想法是否正确,将新的基本情况添加为:
if len(less_than_pivot) == (n-1) :
return insertion_sort(less_than_pivot)
elif len(greater_than_pivot)== n-1:
return insertion_sort(greater_than_pivot)
less_than_pivot表示数组包含所有小于枢轴的元素(greater_than_pivot相同)。
因此,原则上,我需要混合排序算法,考虑快速排序性能可能下降的点(例如,几乎排序的数组),并相应地切换到插入排序。
答: 暂无答案
评论