Order by pair comparisons: Difference between revisions
Content added Content deleted
(→{{header|C++}}: add c++ way using standard sort) |
|||
Line 30: | Line 30: | ||
=={{header|C++}}== |
=={{header|C++}}== |
||
===C++: Binary search insertion sort=== |
|||
<lang cpp>#include <algorithm> |
<lang cpp>#include <algorithm> |
||
#include <iostream> |
#include <iostream> |
||
Line 74: | Line 75: | ||
sortedItems.insert(spotToInsert, item); |
sortedItems.insert(spotToInsert, item); |
||
} |
} |
||
PrintOrder(sortedItems); |
PrintOrder(sortedItems); |
||
return 0; |
|||
⚫ | |||
</lang> |
}</lang> |
||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
Line 102: | Line 103: | ||
</pre> |
</pre> |
||
===C++: STL sort with custom comparator=== |
|||
<lang cpp>#include <algorithm> |
|||
#include <iostream> |
|||
#include <vector> |
|||
using namespace std; |
|||
bool InteractiveCompare(const string& s1, const string& s2) |
|||
{ |
|||
if(s1 == s2) return false; // don't ask to compare items that are the same |
|||
static int count = 0; |
|||
string response; |
|||
cout << "(" << ++count << ") Is " << s1 << " < " << s2 << "? "; |
|||
getline(cin, response); |
|||
return !response.empty() && response.front() == 'y'; |
|||
⚫ | |||
void PrintOrder(const vector<string>& items) |
|||
{ |
|||
cout << "{ "; |
|||
for(auto& item : items) cout << item << " "; |
|||
cout << "}\n"; |
|||
} |
|||
int main() |
|||
{ |
|||
vector<string> items |
|||
{ |
|||
"violet", "red", "green", "indigo", "blue", "yellow", "orange" |
|||
}; |
|||
sort(items.begin(), items.end(), InteractiveCompare); |
|||
PrintOrder(items); |
|||
return 0; |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
(1) Is indigo < violet? y |
|||
(2) Is orange < indigo? y |
|||
(3) Is orange < indigo? y |
|||
(4) Is red < indigo? y |
|||
(5) Is green < indigo? y |
|||
(6) Is yellow < indigo? y |
|||
(7) Is blue < indigo? y |
|||
(8) Is blue < indigo? y |
|||
(9) Is red < orange? y |
|||
(10) Is green < red? n |
|||
(11) Is green < orange? n |
|||
(12) Is yellow < green? y |
|||
(13) Is yellow < orange? n |
|||
(14) Is blue < green? n |
|||
{ red orange yellow green blue indigo violet } |
|||
</pre> |
|||
=={{header|Commodore BASIC}}== |
=={{header|Commodore BASIC}}== |