在词典顺序中生成排列与排序?

sho*_*bhu 3 sorting algorithm permutation lexicographic

我有点困惑.如何在词典顺序中生成排列的问题与排序问题有什么不同?有人可以用一个例子向我解释一下吗?谢谢

das*_*ght 7

这是两件不同的事情.有N!排列,但只有一个排序顺序(排序排列是按字典顺序最小的排列).

以下是排序排列的示例:

brown fox quick
Run Code Online (Sandbox Code Playgroud)

以下是按字典顺序排列的排列列表:

brown fox quick
brown quick fox
fox brown quick
fox quick brown
quick brown fox
quick fox brown
Run Code Online (Sandbox Code Playgroud)

是一个C++程序,用于按字典顺序生成排列:

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>

using namespace std;

int main() {
    vector<string> s;
    s.push_back("quick");
    s.push_back("brown");
    s.push_back("fox");
    sort(s.begin(), s.end());
    do {
        for(int i = 0 ; i != s.size() ; i++) {
            cout << s[i] << " ";
        }
        cout << endl;
    } while (next_permutation(s.begin(), s.end()));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)