现有一个元素均为整数的栈,使用另一个临时栈对其进行非递减排序

现有一个元素均为整数的栈,使用另一个临时栈对其进行非递减排序。

 

 seqStack类:

#include <stack>
using namespace std;
template<class elemType>
class seqStack
{
private:
    elemType*array;
    int Top;
    int maxSize;
    void doubleSpace();
public:
    seqStack(int initSize=100);
    int isEmpty()
    {
        return (Top==-1);
    };
    int isFull()
    {
        return(Top==maxSize-1);
    }
    elemType top();
    void push(const elemType&e);
    void pop();
    void sort();
    ~seqStack()
    {
        delete[]array;
    };
};

  seqStack类函数:

template<class elemType>//初始化顺序栈
seqStack<elemType>::seqStack(int initSize)
{
    array=new elemType[initSize];
    if(!array) throw "illegalSize()";
    Top=-1;
    maxSize=initSize;
}
template<class elemType>
void seqStack<elemType>::doubleSpace()
{
    elemType*tmp;
    int i;

    tmp=new elemType[maxSize*2];
    if(!tmp) throw "illegalSize()";
    for(i=0; i<=Top; i++) tmp[i]=array[i];//逐个复制节点
    delete[]array;
    array=tmp;
    maxSize=2*maxSize;
}

template<class elemType>
elemType seqStack<elemType>::top()//返回栈顶元素的值
{
    if(isEmpty()) throw "outOfBound()";
    return array[Top];
}

template<class elemType>
void seqStack<elemType>::push(const elemType&e)//将元素e压入栈顶,使其成为新的栈顶元素
{
    if(isFull()) doubleSpace();
    array[++Top]=e;
}

template <class elemType>
void seqStack<elemType>::pop()//将栈顶元素弹栈
{
    if (Top==-1) throw "outOfBound()";
    Top--;
}

template <class elemType>
void seqStack<elemType>::sort()
{
    seqStack tmp;
    for (int k=Top; k>-1; k--)
    {
        int K = top();
        pop();
        if (tmp.isEmpty())
        {
            tmp.push(K);
        }
        else
        {
            while(!tmp.isEmpty())
            {
                if(K<=tmp.top())
                {
                    push(tmp.top());
                    tmp.pop();
                }
                else
                    break;
            }
            tmp.push(K);
            int q=Top;
            while(q>=k)
            {
                tmp.push(top());
                pop();
                q--;
            }
        }
    }
    while (!tmp.isEmpty())
    {
        push(tmp.top());
        tmp.pop();
    }
}

### 回答1: 定义函数:def sort_descending(numbers): #numbers为乱序整数列表 numbers.sort(reverse=True) #将numbers列表按照递减排序 return numbers #返回排序后的整数列表 ### 回答2: 可以定义一个函数,实现将指定个数的乱序整数按照递减排序的功能。下面是一个示例代码: ```python def sort_descending(numbers): sorted_numbers = sorted(numbers, reverse=True) return sorted_numbers # 测试 unsorted_numbers = [5, 2, 9, 1, 7] sorted_numbers = sort_descending(unsorted_numbers) print(sorted_numbers) ``` 这个函数接受一个包含乱序整数的列表作为参数,使用`sorted()`函数对列表进行排序,设置`reverse=True`参数使得排序结果是递减的。最后返回排序后的列表。 在上面的例子中,`unsorted_numbers`列表包含了五个乱序的整数。将该列表传入`sort_descending()`函数中,函数内部对列表进行递减排序,得到的排序结果为`[9, 7, 5, 2, 1]`。最后将排序结果打印出来。 这个函数可以适用于任意个数的乱序整数,只需要将整数放入一个列表中作为参数传入函数即可。函数内部会对整数进行递减排序,并返回排序结果的列表。 ### 回答3: 要实现能将指定个数的乱序整数按照递减排序的函数,可以使用冒泡排序算法。 首先,给定一个包含乱序整数的列表。使用两个嵌套的循环,外循环从第一个元素开始遍历到倒数第二个元素,内循环从外循环的下一个元素开始遍历到最后一个元素。 在内循环中,比较当前元素与下一个元素的大小。如果当前元素的值小于下一个元素的值,交换它们的位置。通过这样的比较和交换,每一轮都会将未排序部分中的最大值移到已排序部分的末尾。 重复进行以上的内外循环,直到所有元素都按照递减排序。 下面是一个示例的函数实现: ``` def sort_descending(nums): for i in range(len(nums)-1): for j in range(len(nums)-1-i): if nums[j] < nums[j+1]: nums[j], nums[j+1] = nums[j+1], nums[j] return nums ``` 这个函数接受一个包含乱序整数的列表作为参数。在函数内部,使用两个嵌套的循环对列表进行冒泡排序。最后返回排序后的整数列表。 使用这个函数,只需要将要排序的乱序整数作为参数传入即可,函数将返回按照递减排序整数列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值