Sorting algorithms/Bogosort: Difference between revisions

Content added Content deleted
(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=====