Новый участник
Сообщения: 43
Благодарности: 0
|
Профиль
|
Отправить PM
| Цитировать
Я по капалься и нашел самый для меня понятный код с коментами. Но она не компилирвуется.
Почему?
#include <iostream>
using namespace std;
template<class T> void MergeSort(T *const A, int const n)
{ //Отсортировать массив A, содержащий n элементов
if( n < 2 ) return; //Сортировка не нужна
if( n == 2 ) //Два элемента проще поменять местами,
{ // если нужно, чем делать слияние
if( A[0] > A[1] ) { T const t(A[0]); A[0]=A[1]; A[1]=t; }
return;
}
MergeSort(A , n/2 ); //Сортируем первую половину
MergeSort(A+n/2, n-n/2); //Сортируем вторую половину
T *const B( new T[n] ); //Сюда запишем результат слияния
Merge(A,n/2, A+n/2,n-n/2, B); //Слияние половин
//Копирование результата слияния в исходный массив:
for(int i(0); i<n; ++i) A[i]=B[i];
delete[n] B; //Удаляем временный буфер
}
|
Последний раз редактировалось Hardcore, 29-09-2010 в 23:39.
Отправлено: 23:15, 29-09-2010
| #5
|