一些基本的算法题的整理(2)

整理的内容来源于小象学院的算法网络课程:https://www.bilibili.com/video/av17664182?from=search&seid=10695542251210958364
这次整理的是关于字符全排列的非递归算法题

将一串数字全排列,那么如果我们按从小到大的顺序来排列,也不会漏掉其中任意一个了。
以最小的值为起点,找到比当前值更大的值里面的最小值,如此反复操作,直到输出最大的值为止。
一些基本的算法题的整理(2)

现在的问题是如何计算下一个排列呢?
我们从后位开始往前位看,看有没有前面的数字比后面的小的,如果有小的,那么这个数字要增大,那么整个数就能增大了。
那怎么保证增值是最小的呢?有两点,一是将找到的需增大的数用比它大的最小的数来替换;二是将替换过的位数之后的数按从小到到排在后面。
一些基本的算法题的整理(2)

具体的算法流程:
一些基本的算法题的整理(2)

如果字符串是字母的话,我们可以自定义每个字母的大小,以类似的方法来做。