Sorting algorithms/Bogosort: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (Rename Perl 6 -> Raku, alphabetize, minor clean-up) |
|||
Line 122: | Line 122: | ||
3 6 7 9 |
3 6 7 9 |
||
</pre> |
</pre> |
||
=={{header|ALGOL 68}}== |
=={{header|ALGOL 68}}== |
||
{{trans|python}} |
{{trans|python}} |
||
Line 424: | Line 425: | ||
</lang> |
</lang> |
||
=={{header|AutoHotkey}}== |
=={{header|AutoHotkey}}== |
||
Line 573: | Line 572: | ||
printf("\n"); |
printf("\n"); |
||
}</lang> |
}</lang> |
||
=={{header|C++}}== |
|||
Uses C++11. Compile with |
|||
g++ -std=c++11 bogo.cpp |
|||
<lang cpp>#include <algorithm> |
|||
#include <iostream> |
|||
#include <iterator> |
|||
#include <random> |
|||
template <typename RandomAccessIterator, typename Predicate> |
|||
void bogo_sort(RandomAccessIterator begin, RandomAccessIterator end, |
|||
Predicate p) { |
|||
std::random_device rd; |
|||
std::mt19937 generator(rd()); |
|||
while (!std::is_sorted(begin, end, p)) { |
|||
std::shuffle(begin, end, generator); |
|||
} |
|||
} |
|||
template <typename RandomAccessIterator> |
|||
void bogo_sort(RandomAccessIterator begin, RandomAccessIterator end) { |
|||
bogo_sort( |
|||
begin, end, |
|||
std::less< |
|||
typename std::iterator_traits<RandomAccessIterator>::value_type>()); |
|||
} |
|||
int main() { |
|||
int a[] = {100, 2, 56, 200, -52, 3, 99, 33, 177, -199}; |
|||
bogo_sort(std::begin(a), std::end(a)); |
|||
copy(std::begin(a), std::end(a), std::ostream_iterator<int>(std::cout, " ")); |
|||
std::cout << "\n"; |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
-199 -52 2 3 33 56 99 100 177 200 |
|||
</pre> |
|||
=={{header|C sharp|C#}}== |
=={{header|C sharp|C#}}== |
||
Line 661: | Line 623: | ||
} |
} |
||
}</lang> |
}</lang> |
||
=={{header|C++}}== |
|||
Uses C++11. Compile with |
|||
g++ -std=c++11 bogo.cpp |
|||
<lang cpp>#include <algorithm> |
|||
#include <iostream> |
|||
#include <iterator> |
|||
#include <random> |
|||
template <typename RandomAccessIterator, typename Predicate> |
|||
void bogo_sort(RandomAccessIterator begin, RandomAccessIterator end, |
|||
Predicate p) { |
|||
std::random_device rd; |
|||
std::mt19937 generator(rd()); |
|||
while (!std::is_sorted(begin, end, p)) { |
|||
std::shuffle(begin, end, generator); |
|||
} |
|||
} |
|||
template <typename RandomAccessIterator> |
|||
void bogo_sort(RandomAccessIterator begin, RandomAccessIterator end) { |
|||
bogo_sort( |
|||
begin, end, |
|||
std::less< |
|||
typename std::iterator_traits<RandomAccessIterator>::value_type>()); |
|||
} |
|||
int main() { |
|||
int a[] = {100, 2, 56, 200, -52, 3, 99, 33, 177, -199}; |
|||
bogo_sort(std::begin(a), std::end(a)); |
|||
copy(std::begin(a), std::end(a), std::ostream_iterator<int>(std::cout, " ")); |
|||
std::cout << "\n"; |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
-199 -52 2 3 33 56 99 100 177 200 |
|||
</pre> |
|||
=={{header|Clojure}}== |
=={{header|Clojure}}== |
||
Line 939: | Line 938: | ||
Sorted: 1 2 3 5 7 |
Sorted: 1 2 3 5 7 |
||
</pre> |
</pre> |
||
=={{header|Elena}}== |
=={{header|Elena}}== |
||
ELENA 5.0 : |
ELENA 5.0 : |
||
Line 1,308: | Line 1,308: | ||
lst := list(2, 1, 4, 3) |
lst := list(2, 1, 4, 3) |
||
lst bogoSortInPlace println # ==> list(1, 2, 3, 4), hopefully :)</lang> |
lst bogoSortInPlace println # ==> list(1, 2, 3, 4), hopefully :)</lang> |
||
=={{header|J}}== |
=={{header|J}}== |
||
{{eff note|J|/:~}} |
{{eff note|J|/:~}} |
||
Line 2,053: | Line 2,054: | ||
$last = $_;} |
$last = $_;} |
||
return 1;}</lang> |
return 1;}</lang> |
||
=={{header|Perl 6}}== |
|||
<lang perl6>sub bogosort (@list is copy) { |
|||
@list .= pick(*) until [<=] @list; |
|||
return @list; |
|||
} |
|||
my @nums = (^5).map: { rand }; |
|||
say @nums.sort.Str eq @nums.&bogosort.Str ?? 'ok' !! 'not ok'; |
|||
</lang> |
|||
=={{header|Phix}}== |
=={{header|Phix}}== |
||
Line 2,380: | Line 2,371: | ||
(12 26 86 232 700 703 713 778 894 931) |
(12 26 86 232 700 703 713 778 894 931) |
||
</pre> |
</pre> |
||
=={{header|Raku}}== |
|||
(formerly Perl 6) |
|||
<lang perl6>sub bogosort (@list is copy) { |
|||
@list .= pick(*) until [<=] @list; |
|||
return @list; |
|||
} |
|||
my @nums = (^5).map: { rand }; |
|||
say @nums.sort.Str eq @nums.&bogosort.Str ?? 'ok' !! 'not ok'; |
|||
</lang> |
|||
=={{header|REXX}}== |
=={{header|REXX}}== |
||
Line 2,972: | Line 2,974: | ||
2, 6, 3, 4, 1, 5 |
2, 6, 3, 4, 1, 5 |
||
1, 2, 3, 4, 5, 6</pre> |
1, 2, 3, 4, 5, 6</pre> |
||
=={{header|VBScript}}== |
=={{header|VBScript}}== |
||
=====Implementation===== |
=====Implementation===== |