![]() |
Вопрос на кругозор
Можете наглядно объеснить как можно написать merge sort алгаритом с коментами.
Хотел сам по гуглить но нечего не опнятно. |
|
Там были примеры, но без коментов. Я ничего не понял. Я хотел по просить кого нить чтоб он написал код с понятными коментами.
LxA 85, можешь написать и всё подробно расписать? |
Hardcore, ты по ссылкам в статье в Википедии ходил? Там в картинках с примерами. Псевдокод и т.д.
Или тебе не понятен смысл и суть алгоритма? Как бы сказать... Что именно ты хочешь узнать? Понимаешь, твой вопрос сейчас звучит в очень широком смысле. И поэтому, как и каждого не определившегося, тебя посылают изучать литературу. Когда у тебя появится базис, ты уже сможешь задать более конкретный вопрос. И уже будет видно, что человек что-то искал, копал, старался. Т.е. уже можно с ним о чем то поговорить. Поэтому без обид, но пока тебе придется дальше изучать примеры в википедии. С листком бумаги, с собственными примерами входных данных. Пройти алгоритм "по шагам" в ручную. P.S. Сразу скажу, никаких кодов С++ я писать не буду. Псевдокод в лучшем случае. |
Я по капалься и нашел самый для меня понятный код с коментами. Но она не компилирвуется.
Почему? #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; //Удаляем временный буфер } |
а компилятор что говорит?
|
Выводит Error(
|
где блок main ?
где реализация функций merge? (или она стандартная, встроенная) Цитата:
|
Error 2 error LNK1120: 1 unresolved externals C:\Users\Sungat\documents\visual studio 2010\Projects\лимит\Debug\merge.exe
Error 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup C:\Users\Sungat\documents\visual studio 2010\Projects\лимит\лимит\MSVCRTD.lib(crtexe.obj) |
Цитата:
Вместо этого для каждого типа данных, указываемых параметром T, создаётся свой код. Для того, чтобы компилятор мог создать этот код, текст шаблона должен быть подключен к тексту модуля. А поскольку подключаются обычно только .h файлы, значит текст функции должен быть реализован не в .cpp, а именно в .h |
El Scorpio, можешь помочь с проблемой?
|
Попался ресурс по теме: Сортирующие алгоритмы
|
Чем именно помочь? Погуглить за вас?
По ошибке 1120 я уже сказал - перенести текст её функции из файла cpp в файл h А*по ошибке 2019 сразу же нашёл это - http://www.cyberforum.ru/visual-cpp/thread38697.html я рад за тебя! пропиши в свойствах проекта точку входа - функцию main По моему такая ошибка возникает когда пытаешься запустить консольное приложение в проекте другого типа, т.е. Win32 Project, а не Win32 Console Project |
Время: 17:08. |
Время: 17:08.
© OSzone.net 2001-