简答题

写出快速排序的非递归调用算法。

正确答案

先调用划分函数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)的递归算法。

    简答题查看答案

  • 实现任意二叉树的后序遍历的非递归算法而不适用栈结构,最佳的二叉树方法是采用()。

    填空题查看答案