Форум программистов, компьютерный форум CyberForum.ru

Выполнить сортировку целочисленного массива - C++

Восстановить пароль Регистрация
 
sergei15
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 26
23.05.2012, 21:34     Выполнить сортировку целочисленного массива #1
Выполнить сортировку целочисленного массива (поиск в массиве) из n элементов. Алгоритм сортировки (поиска) оформить в виде функции.Сортировка слиянием (метод фон Неймана)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2012, 21:34     Выполнить сортировку целочисленного массива
Посмотрите здесь:

C++ Описать класс, делающий сортировку целочисленного одномерного массива, с использованием всего 5-ти операторов
Выполнить сортировку одномерного массива X(100) методом Шейкера. C++
C++ Выполнить сортировку одномерного массива X(100) методом вычисления адреса
C++ Выполнить сортировку одномерного массива X(100) методом Шелла
C++ Выполнить сортировку одномерного массива X(100) методом бинарных вставок
Выполнить сортировку массива с помощью стандартной функции быстрой сортировки qsort C++
Выполнить сортировку массива с помощью стандартной функции быстрой сортировки qsort C++
C++ Выполнить сортировку массива в заданном порядке

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
w@
10 / 10 / 1
Регистрация: 11.04.2012
Сообщений: 28
23.05.2012, 21:53     Выполнить сортировку целочисленного массива #2
Процедура слияния требует два отсортированных массива
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
template<class T> void Merge(T const *const A, int const nA,
                             T const *const B, int const nB,
                             T *const C)
{ //Выполнить слияние массива A, содержащего nA элементов,
  //  и массива B, содержащего nB элементов.
  //  Результат записать в массив C.
 
    int a(0), b(0); //Номера текущих элементов в массивах A и B
 
    while( a+b < nA+nB ) //Пока остались элементы в массивах
    {
        if( (b>=nB) || ( (a<nA) && (A[a]<=B[b]) ) )
        { //Копирую элемент из массива A
            C[a+b] = A[a];
            ++a;
        } else { //Копирую элемент из массива B
            C[a+b] = B[b];
            ++b;
        }
    }
}
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; //Удаляем временный буфер
}
Yandex
Объявления
23.05.2012, 21:53     Выполнить сортировку целочисленного массива
Ответ Создать тему
Опции темы

Текущее время: 01:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru