先调用划分函数Quickpass(划分函数同教材),以确定中间位置,然后再借助栈分别对中间元素的左、右两边的区域进行快速排序。
(简答题)
写出快速排序的非递归调用算法。
正确答案
答案解析
略
相似试题
(判断题)
递归调用算法与相同功能的非递归算法相比,主要问题在于重复计算太多,而且调用本身需要分配额外的空间和传递数据和控制,所以时间与空间开销通常都比较大。
(简答题)
完成从一维数组A[n]上进行快速排序的递归算法。
(填空题)
对一组记录(54,38,96,23,15,72,60,45,83)进行快速排序,在递归调用中使用的栈所能达到的最大深度为()。
(填空题)
对用数组存储的线性表(16,15,32,11,6,30),用快速排序算法进行由小到大排序,若排序下标范围为0~5,选择元素16作为支点,调用一趟快速排序算法后,元素16在数组中的下标位置为()
(单选题)
将递归算法转换成对应的非递归算法时,通常需要使用()来保存中间结果。
(简答题)
已知Ackerman函数的定义如下: (1)写出递归算法; (2)写出非递归算法; (3)根据非递归算法,求akm(2,1)时栈的变化过程。
(简答题)
试写出求递归函数F(n)的递归算法,并消除递归:
(简答题)
已知Fibonacci数列的递归定义如下: 试写出求解fib(n)的递归算法。
(填空题)
实现任意二叉树的后序遍历的非递归算法而不适用栈结构,最佳的二叉树方法是采用()。