题目内容
(请给出正确答案)
[主观题]
上述用栈来代替递归实现快速排序的算法,在最差情况下栈有多深?怎样组织递归调用的顺序可以减小栈的深度?试
在上面程序的基础上写出改进的非递归算法。
查看答案
如果结果不匹配,请 联系老师 获取答案
下面是一个快速排序的逆归算法。为了避免最坏情况,取基准记录pivot采用从lelt,right和中取中间值,并交换到low位置的办法。数组A存放待排序的一组记录,数据类型为T,left和right是待排序子区间的最左端点和最右端点。
(1)实现三者取中子程序mediancy(A,left,right);
(2)改写QuickSort算法,不用栈消去第二个递归调用QuickSort(A,pivotPos+1,right);
(3)继续改写QuickSort算法,用栈消去剩下的递归调用。
将一个非负十进制整数转换成八进制数,使用非递归算法实现。
算法分析:十进制转换成八进制的过程是将十进制整数除8得余数,直到商是0为止,然后倒排余数。为了得到倒排的余数,可以利用栈来实现,每次运算后将余数压入栈中,直到商为0,将栈中数据输出即是。使用顺序栈,将顺序栈的定义及其基本操作的实现写在头文件“seqstack.h”中。
(1)直接用循环结构的算法替代递归算法。
(2)用()模拟系统的运行过程,通过分析只保存必须保存的信息,从而用非递归算法替代递归算法。
A.栈
B.队列
C.顺序表
D.链表