- 论坛徽章:
- 0
|
另外一个 merge sort- template<typename IT> void merge(IT begin, IT middle, IT end, IT res)
- {
- IT a = begin, b = middle, r = res;
- while (a < middle && b < end)
- if (*a < *b) *r++ = *a++;
- else *r++ = *b++;
- while (a < middle) *r++ = *a++;
- while (b < end) *r++ = *b++;
- while (begin < end) *begin++ = *res++;
- }
- template<typename IT> void mergesort(IT begin, IT end, IT res)
- {
- int s = end-begin;
- if (s > 1)
- {
- IT middle = begin+s/2;
- mergesort(begin, middle, res);
- mergesort(middle, end, res);
- merge(begin, middle, end, res);
- }
- }
复制代码 |
|