<
classIterator>
13void merge(Iterator, Iterator,
constIterator,
char[]);
24template<
classIterator>
29 char* buffer =
new char[n *
sizeof(*first)];
33 for(
size_tlength(1); length < n; length <<= 1) {
36 for(
size_tcounter(n / (length << 1)); counter; --counter) {
37Iterator right(left + length), end(right + length);
38 merge(left, right, end, buffer);
43 if((n & ((length << 1) - 1)) > length)
44 merge(left, left + length, last, buffer);
56template<
classIterator>
57void merge(Iterator l, Iterator r,
constIterator e,
charb[]) {
59 autop(
reinterpret_cast<std::remove_reference_t<decltype(*l)
>*>(b)), c(p);
61 for(Iterator t(l); r != t; ++t) *p++ = std::move(*t);
64 while(e != r && c != p) *l++ = std::move(*r < *c ? *r++ : *c++);
67 while(e != r) *l++ = std::move(*r++);
69 while(c != p) *l++ = std::move(*c++);
76template<
classIterator>
85template<
classIterator>
96std::cout <<
"Enter the number of elements : ";
98 int* arr =
new int[size];
99 for(
inti = 0; i < size; ++i) {
100std::cout <<
"arr["<< i <<
"] = ";
104std::cout <<
"Sorted array\n";
105 for(
inti = 0; i < size; ++i)
106std::cout <<
"arr["<< i <<
"] = "<< arr[i] <<
'\n';
int main()
Main function.
void non_recursive_merge_sort(const Iterator first, const Iterator last, const size_t n)
bottom-up merge sort which sorts elements in a non-decreasing order
void merge(Iterator, Iterator, const Iterator, char[])
merges 2 sorted adjacent segments into a larger sorted segment
void non_recursive_merge_sort(const Iterator first, const Iterator last, const size_t n)
bottom-up merge sort which sorts elements in a non-decreasing order
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4