Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Вопрос на кругозор (http://forum.oszone.net/showthread.php?t=186873)

Hardcore 29-09-2010 16:19 1507438

Вопрос на кругозор
 
Можете наглядно объеснить как можно написать merge sort алгаритом с коментами.
Хотел сам по гуглить но нечего не опнятно.

lxa85 29-09-2010 17:29 1507505

Цитата:

Цитата Hardcore
Хотел сам по гуглить »

Что помешало?
Сортировка_слиянием

Hardcore 29-09-2010 21:48 1507730

Там были примеры, но без коментов. Я ничего не понял. Я хотел по просить кого нить чтоб он написал код с понятными коментами.
LxA 85, можешь написать и всё подробно расписать?

lxa85 29-09-2010 22:30 1507756

Hardcore, ты по ссылкам в статье в Википедии ходил? Там в картинках с примерами. Псевдокод и т.д.
Или тебе не понятен смысл и суть алгоритма?

Как бы сказать... Что именно ты хочешь узнать? Понимаешь, твой вопрос сейчас звучит в очень широком смысле. И поэтому, как и каждого не определившегося, тебя посылают изучать литературу. Когда у тебя появится базис, ты уже сможешь задать более конкретный вопрос. И уже будет видно, что человек что-то искал, копал, старался. Т.е. уже можно с ним о чем то поговорить.
Поэтому без обид, но пока тебе придется дальше изучать примеры в википедии. С листком бумаги, с собственными примерами входных данных. Пройти алгоритм "по шагам" в ручную.

P.S. Сразу скажу, никаких кодов С++ я писать не буду. Псевдокод в лучшем случае.

Hardcore 29-09-2010 23:15 1507789

Я по капалься и нашел самый для меня понятный код с коментами. Но она не компилирвуется.
Почему?

#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; //Удаляем временный буфер
}

Hector 30-09-2010 00:17 1507823

а компилятор что говорит?

Hardcore 30-09-2010 08:03 1507921

Выводит Error(

lxa85 30-09-2010 08:32 1507932

где блок main ?
где реализация функций merge? (или она стандартная, встроенная)
Цитата:

Цитата Hardcore
Выводит Error( »

Какой именно Error?

Hardcore 30-09-2010 09:06 1507942

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)

El Scorpio 01-10-2010 09:34 1508694

Цитата:

Цитата Hardcore
Error 2 error LNK1120: »

Поскольку указанная функция есть шаблон, то она сама по себе не комплируется.
Вместо этого для каждого типа данных, указываемых параметром T, создаётся свой код.
Для того, чтобы компилятор мог создать этот код, текст шаблона должен быть подключен к тексту модуля. А поскольку подключаются обычно только .h файлы, значит текст функции должен быть реализован не в .cpp, а именно в .h

Hardcore 01-10-2010 14:00 1508899

El Scorpio, можешь помочь с проблемой?

lxa85 03-10-2010 16:03 1510345

Попался ресурс по теме: Сортирующие алгоритмы

El Scorpio 04-10-2010 04:29 1510809

Чем именно помочь? Погуглить за вас?
По ошибке 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-