fork(1) download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. string merge(string str1, string str2) {
  7. string final = "";
  8. int i = 0, j = 0;
  9. bool fromStr1 = false;
  10.  
  11. while (true) {
  12. if (i >= (int)str1.size()) {
  13. break;
  14. }
  15. if (j >= (int)str2.size()) {
  16. fromStr1 = true; // changed the order of this with break!
  17. break;
  18. }
  19.  
  20. if (str1[i] < str2[j]) {
  21. final += str1[i];
  22. i++;
  23. }
  24. else {
  25. final += str2[j];
  26. j++;
  27. }
  28. }
  29.  
  30. if (fromStr1) {
  31. for (int t = i; t < (int)str1.size(); t++) {
  32. final += str1[t];
  33. }
  34. }
  35. else {
  36. for(int t = j; t < (int)str2.size(); t++) {
  37. final += str2[t];
  38. }
  39. }
  40.  
  41. return final;
  42. }
  43.  
  44. string mergeSort(string str1) {
  45. int len = str1.size();
  46. if (len <= 1)
  47. return str1;
  48. else {
  49. string newStr1 = mergeSort(str1.substr(0, len / 2));
  50. string newStr2 = mergeSort(str1.substr(len / 2, len - len / 2));
  51. return merge(newStr1, newStr2);
  52. }
  53. }
  54.  
  55. int main()
  56. {
  57. cout << '"' << mergeSort("") << '"' << endl;
  58. cout << '"' << mergeSort("a") << '"' << endl;
  59. cout << '"' << mergeSort("ba") << '"' << endl;
  60. cout << '"' << mergeSort("132") << '"' << endl;
  61. cout << '"' << mergeSort("4321") << '"' << endl;
  62. cout << '"' << mergeSort("54321") << '"' << endl;
  63. return 0;
  64. }
  65.  
Success #stdin #stdout 0s 3032KB
stdin
Standard input is empty
stdout
""
"a"
"ab"
"123"
"1234"
"12345"