fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <random>
  4.  
  5. void swap(char &a, char &b) { char t = a; a = b; b = t; }
  6.  
  7. bool isSorted(std::string str) {
  8. bool ret = true;
  9. for (int i = 0; i < str.size() - 1; i++)
  10. if (str[i] > str[i + 1]) {
  11. ret = false;
  12. break;
  13. }
  14. return ret;
  15. }
  16.  
  17. void bogosort(std::string &str, int seed) {
  18. std::mt19937 MT(seed);
  19. while (!isSorted(str)) {
  20. /*Fisher?Yates shuffle */
  21. for (int n = str.size(); n > 0; --n) {
  22. int r = MT() % n;
  23. swap(str[r], str[n - 1]);
  24. }
  25. }
  26. }
  27.  
  28. int const seed = 31415926;
  29. int main() {
  30. std::string str = "lkjihgfedcba";
  31. bogosort(str, seed);
  32. std::cout << str << std::endl;
  33. return 0;
  34. }
  35.  
Success #stdin #stdout 1.34s 16064KB
stdin
Standard input is empty
stdout
abcdefghijkl