0 / 0 / 0
Регистрация: 01.12.2013
Сообщений: 10
1

Сортировка массива перемешиванием, по ключу

17.05.2016, 23:22. Показов 765. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть рабочая программа, которая сортирует массив методом вставок
C++ (Qt)
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
#include "stdafx.h"
#include <iostream>
struct Employee
{
    int year;
};
typedef Employee *PEmp; // новый тип данных – указатель на структуру
void S_Vst (PEmp a[], int n)
{
    int i, j;
    PEmp t;
    for(i=1; i<n; i++) // Перебор элементов
    {
        t = a[i]; // Выбор элемента
        for(j = i-1; j >= 0 && t->year < a[j]->year; j--) // Поиск необходимой позиции
            a[j+1] = a[j]; // для Вcтавки элемента
        a[j+1] = t; // Вставка элемента
    }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    const int n = 2;
    Employee emp[n]; // массив структур
    PEmp p[n]; // массив указателей
    int i;
    std::cout<<"Введите год приема на работу: \n";
    for(i = 0; i < n; ++i){
        std::cin>>emp[i].year;
        p[i] = &emp[i];}
//    S_Vst(emp, n);
    S_Vst( p, n ); // сортировка по указателям
    std::cout<<"Отсортировано: \n";
    for(i = 0; i < n; ++i)
        std::cout<<p[i]->year<<std::endl;
    system("pause");
    return 0;
}
Нужно сделать аналогичную, но с сортировкой методом перемешивания. Вот на чем я остановился:
C++ (Qt)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
struct Employee
{
    int year;
};
typedef Employee *PEmp; // новый тип данных – указатель на структуру
 
//ф-ция для обмена значений ячеек
void swapEl(PEmp a[], int i)
{
    PEmp buff;
    buff = a[i];
    a[i] = a[i - 1];
    a[i - 1] = buff;
}
 
//ф-ция "шейкер"-сортировки
void S_Vst (PEmp a[], int n)
{
    PEmp buff;
    int i,j;
    int leftMark = 1;
    int rightMark = n - 1;
    while (leftMark <= rightMark)
    {
        for (i = rightMark; i >= leftMark; i--)
        if (a[i - 1] > a[i]) swapEl(a, i);
        leftMark++;
 
 
        for (i = leftMark; i <= rightMark; i++)
        if (a[i - 1] > a[i]) swapEl(a, i);
        rightMark--;
 
        cout << "Кол-во итераций: " << leftMark - 1<< "\n"; // просмотр количества итераций
 
    }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    const int n = 2;
    Employee emp[n]; // массив структур
    PEmp p[n]; // массив указателей
    int i;
    std::cout<<"Введите год приема на работу: \n";
    for(i = 0; i < n; ++i){
        std::cin>>emp[i].year;
        p[i] = &emp[i];}
    S_Vst( p, n ); // сортировка по указателям
    std::cout<<"Отсортировано: \n";
    for(i = 0; i < n; ++i)
        std::cout<<p[i]->year<<std::endl;
    system("pause");
    return 0;
}
Дальше, я так понимаю, нужно создать новый массив и отсортировать год по возрастанию.
Как это сделать сохранив при этом вывод массива по указателям?
Заранее спасибо за помощь!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2016, 23:22
Ответы с готовыми решениями:

Шейкерная сортировка (перемешиванием)
Написать программу, в которой будет сортироваться массив с помощью шейкерной сортировки, то есть...

Сортировка перемешиванием некорректно работает
Имеется участок кода #include &lt;iostream&gt; #include &quot;masfunc.cpp&quot; using namespace std; ...

Сортировка массива по ключу
Коллеги, доброго времени суток, вопрос такой: есть массив: Array ( =&gt;...

Сортировка массива по ключу
Как отсортировать массив по ключу? const N = 10; type Student = class Name,...

0
17.05.2016, 23:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2016, 23:22
Помогаю со студенческими работами здесь

Сортировка массива по ключу
массив имеет вид нужно отсортировать по ключу 'tot'. вот что я нашел foreach($info as...

Сортировка массива структур по ключу
Необходимо отсортировать одномерный массив по ключу. элемент массива представляет собой структуру....

Сортировка перемешиванием
Всем привет, нужна помощь, задание звучит так: Для выполнения работы необходимо: • создать...

Сортировка перемешиванием
Как сделать вывод на экран каждого шага шейкер-сортировки? И как ввести массив с клавиатуры?...

Сортировка перемешиванием
Массив из n&lt;10000 элементов заполняется случайными дробными числами от -10000 до 10000. Число n...

Сортировка перемешиванием (Шейкерная)
Приветствую! Помогите, пожалуйста, с реализацией сортировки перемешиванием (Шейкерной) по...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru