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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sergei15
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 26
#1

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

23.05.2012, 21:34. Просмотров 657. Ответов 1
Метки нет (Все метки)

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

Описать класс, делающий сортировку целочисленного одномерного массива, с использованием всего 5-ти операторов - C++
Задача: Описать класс, делающий сортировку целочисленного одномерного массива, с использованием всего 5-ти операторов (т.е. кол-во...

Выполнить сортировку двумерного массива - C++
Выполнить сортировку двумерного массива с перестановкой строк так, что бы среднии значения возрастали от первой строки к последней(на с++...

Выполнить сортировку массива методом пузырька - C++
Дан массив А. Выполнить сортировку с помощью метода пузырьком

Выполнить сортировку массива в заданном порядке - C++
Создайте приложение, которое предлагает пользователю ввести размер массива и создать массив случайных целых чисел, а затем, используя...

Выполнить сортировку одномерного массива X(100) методом Шелла - C++
задание: Выполнить сортировку одномерного массива X(100) методом Шелла. В отсортированном одномерном массиве X(100)выполнить поиск...

Выполнить сортировку одномерного массива X(100) методом Шейкера. - C++
Выполнить сортировку одномерного массива X(100) методом Шейкера. В отсортированном одномерном массиве X(100)выполнить поиск за-данного...

Выполнить сортировку одномерного массива X(100) методом вычисления адреса - C++
Разобрался наконец с заданием...оно звучит так как в заголовке...сортировка вычислением адреса

Выполнить сортировку одномерного массива X(100) методом бинарных вставок - C++
Здравствуйте уважаемые пользователи форума, прошу составить программу в с++ просто нужно сдать программу эту через 2 дня

Выполнить сортировку массива с помощью стандартной функции быстрой сортировки qsort - C++
Здравствуйте! прошу вас о помощи! помогите пожалуйста с программой! "Выполнить сортировку массива с помощью стандартной функции быстрой...

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

Выполнить сортировку одномерного массива методом вставки в список с вычислением адреса - C++
Приветствую друзья программисты. Нужна ваша неотъемлемая помощь. Выполнить сортировку одномерного массива X(100) методом вставки в...

Выполнить пузырьковую сортировку массива по возрастанию и вывести исходный массив обработанный на экран - C++
Выполнить пузырьковую сортировку массива по возрастанию и вывести исходный массив обработанный на экран.


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
w@
11 / 11 / 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; //Удаляем временный буфер
}
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru