0 / 0 / 0
Регистрация: 16.12.2007
Сообщений: 4
|
|
1 | |
Создать шаблон функции, выполняющий сортировку слиянием (Метод Фон Неймана) в массиве16.12.2007, 11:32. Показов 10918. Ответов 8
Метки нет (Все метки)
Создать шаблон функции, выполгяющий сортировку слиянием (Метод Фон Неймана) в массиве. Протестировать шаблон для массивов с элементами различных типов: int, float, char.
Заранее спасибо...
0
|
16.12.2007, 11:32 | |
Ответы с готовыми решениями:
8
Создать шаблон функции, выполняющая внешнюю сортировку сбалансированным слиянием. OpenMP метод исключения(фон Неймана) Создать Виртуальную Машину вычисляющую НОД двух чисел. Вычисляющую n! слогаемых. Машина должна быть по принципам фон Неймана. Сортировку вставками меняем на сортировку слиянием |
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
16.12.2007, 11:48 | 2 |
а можно озвучить сей метод... а то я про такой даже на слышал...
0
|
0 / 0 / 0
Регистрация: 16.12.2007
Сообщений: 4
|
|
16.12.2007, 11:56 [ТС] | 3 |
Метод фон Неймана:
Упорядочить пары соседних элементов массива а (а0 и а1, а2 и а3 и т.д.) и перенести их во вспомогательный массив b. Затем взять по две соседние пары из b и, слив их в упорядоченные четверки, снова записать в а; затем каждые две четверки из b слить в упорядоченные восьмерки и переписать в а и т.д. Упорядоченный массив должен оказаться в массиве а. В этом алгоритме массивы упорядочиваются по возрастанию. Помогите пожалуйста...
0
|
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
16.12.2007, 13:33 | 4 |
я, конечно, ничего не имею против фон неймана, но придумал он лютую жесть... ну попробую... завтра пришлю сырцы....
0
|
0 / 0 / 0
Регистрация: 16.12.2007
Сообщений: 4
|
|
16.12.2007, 19:26 [ТС] | 5 |
0
|
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
17.12.2007, 13:43 | 6 |
не уверен, что до конца осилил эту сортировку, но сырцы вроде бы рабочие:
Код
void Sort(int* a, int len){ int tmp = 0; for(int i = 0; i < len; i++) for(int j = i + 1; j < len; j++){ if(a[i] > a[j]){ tmp = a[j]; a[j] = a[i]; a[i] = tmp; } } } //--------------------------------------------------------------------------- int main(int argc, char* argv[]) { int* arr1 = new int[30]; int* arr2; randomize(); for(int j = 0; j < 30; j++){ arr1[j] = random(255); } for(int i = 0; i < 30; i++) std::cout<<arr1[i]<<" "; std::cout<<"\n"; int n = 0, k = 0, ni = 0, ii = 0, r = 0; for(int i = 2; i < 30; i *= 2){ arr2 = new int[i]; for(k = 0; k < 30 - i; k += i){ ii = 0; for(int j = k; j < k + i; j++){ arr2[ii] = arr1[j]; ii++; } Sort(arr2, i); ii = 0; for(int j = k; j < k + i; j++){ arr1[j] = arr2[ii]; ii++; } } delete arr2; for(int j = k; j < 30; j++){ arr2[ii] = arr1[j]; ii++; } Sort(arr2, i); ii = 0; for(int j = k; j < 30; j++){ arr1[j] = arr2[ii]; ii++; } for(int i = 1; i < 30; i++) std::cout<<arr1[i]<<" "; std::cout<<"\n"; } Sort(arr1, 30); for(int i = 1; i < 30; i++) std::cout<<arr1[i]<<" "; std::cout<<"\n"; getch(); return 0; } //---------------------------------------------------------------------------
0
|
2 / 2 / 0
Регистрация: 27.05.2009
Сообщений: 8
|
||||||
27.05.2009, 17:53 | 7 | |||||
Это не сортировка слиянием, а обычная сортировка методом пузырька , не вводи людей в заблуждение
Добавлено через 26 минут 20 секунд Хотя я уже не помогу Юленьке, зато другому кому-то пригодится Вот исходник на Visual C++
2
|
2 / 2 / 1
Регистрация: 20.12.2009
Сообщений: 20
|
|
22.12.2009, 07:31 | 8 |
Ai,Спасибо большое, Вы меня просто выручили сортровкой слиянием!
0
|
1 / 1 / 0
Регистрация: 20.09.2010
Сообщений: 36
|
||||||
10.12.2010, 16:14 | 9 | |||||
0
|
10.12.2010, 16:14 | |
10.12.2010, 16:14 | |
Помогаю со студенческими работами здесь
9
2 принцип фон Неймана Алгоритм фон Неймана. машина фон неймана алгоритм фон Неймана Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |