Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 1
Регистрация: 08.03.2019
Сообщений: 71

Внешняя сортировка. Каким образом происходит сортировка наборов данных при распределении?

17.12.2019, 20:52. Показов 521. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код внешней сортировки
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include "pch.h"
#include <iostream>
#pragma warning(disable : 4996)
 
void Simple_Merging_Sort(char *name);
 
int main()
{
    char* s = new char[10];
    strcpy(s, "first.txt");
    setlocale(LC_ALL, "Russian");
    Simple_Merging_Sort(s);
    system("pause");
}
 
//Описание функции сортировки простым слиянием
void Simple_Merging_Sort(char *name) 
{
    int a1,
        a2,
        k,
        i,
        j,
        kol;
    FILE *f, *f1, *f2;
    kol = 0;//
    if ((f = fopen(name, "r")) == NULL)
        printf("\nИсходный файл не может быть прочитан...");
    else {
        while (!feof(f))
        {
            fscanf(f, "%d", &a1);
            kol++;
        }
        fclose(f);
    }
    k = 1;
    while (k < kol) {
        f = fopen(name, "r");
        f1 = fopen("smsort_1", "w");
        f2 = fopen("smsort_2", "w");
        if (!feof(f))
            fscanf(f, "%d", &a1);
        while (!feof(f))
        {
            for (i = 0; i < k && !feof(f); i++)
            {
                fprintf(f1, "%d ", a1);
                fscanf(f, "%d", &a1);
            }
            for (j = 0; j < k && !feof(f); j++)
            {
                fprintf(f2, "%d ", a1);
                fscanf(f, "%d", &a1);
            }
        }
        fclose(f2);
        fclose(f1);
        fclose(f);
 
        f = fopen(name, "w");
        f1 = fopen("smsort_1", "r");
        f2 = fopen("smsort_2", "r");
        if (!feof(f1))
            fscanf(f1, "%d", &a1);
        if (!feof(f2))
            fscanf(f2, "%d", &a2);
        while (!feof(f1) && !feof(f2))
        {
            i = 0;
            j = 0;
            while (i < k && j < k && !feof(f1) && !feof(f2))
            {
                if (a1 < a2)
                {
                    fprintf(f, "%d ", a1);
                    fscanf(f1, "%d", &a1);
                    i++;
                }
                else
                {
                    fprintf(f, "%d ", a2);
                    fscanf(f2, "%d", &a2);
                    j++;
                }
            }
            while (i < k && !feof(f1))
            {
                fprintf(f, "%d ", a1);
                fscanf(f1, "%d", &a1);
                i++;
            }
            while (j < k && !feof(f2))
            {
                fprintf(f, "%d ", a2);
                fscanf(f2, "%d", &a2);
                j++;
            }
        }
        while (!feof(f1))
        {
            fprintf(f, "%d ", a1);
            fscanf(f1, "%d", &a1);
        }
        while (!feof(f2))
        {
            fprintf(f, "%d ", a2);
            fscanf(f2, "%d", &a2);
        }
        fclose(f2);
        fclose(f1);
        fclose(f);
        k *= 2;
    }
    remove("smsort_1");
    remove("smsort_2");
    std::cout << " Готово! " << std::endl;
}
Создаётся файл и в него записываются целочисленные данные. При запуске данного кода происходит сортировка содержимого файла с помощью двух других файлов. Так вот, каким образом происходит упорядочивание данных в побочных файлах при записи в них? То,как они сортируются в основном файле я понимаю,но ведь они же как-то выстраиваются в правильном отсортированном порядке в побочных файлах.
Как я понял,это происходит в 39-59 строках, так как именно там данные записываются в побочные файлы,но как происходит упорядочивание?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.12.2019, 20:52
Ответы с готовыми решениями:

Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом?
Помогите, пожалуйста, разобраться. Подскажите в каком куске кода происходит сортировка и каким именно образом? #include &lt;iostream&gt; ...

Каким образом при интегрировании происходит замена dx, например, на d(kx+b)
Подскажите, пожалуйста! Каким образом при интегрировании происходит замена dx, например, на d(kx+b)? Как при этом меняется подынтегральное...

Сортировка различных наборов данных
ПОМОГИТЕ ПОЖАЛУЙСТА!! ОЧЕНЬ СРОЧНО!! Почему-то не работает, помогите исправить! Массив данных заполнять случайным образом....

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.12.2019, 20:52
Помогаю со студенческими работами здесь

Внешняя сортировка(сортировка последовательностей)Не работает
Вот начал смотреть прямое слияние. А она не выдает желаемых результатов. Вот последовательность к примеру 10,12,9,3,11,1, если брать...

Каким образом происходит залог сайта?
Добрый вечер Один человек дает мне кредит, но взамен требует залог сайта. (сайт раскручен в месяц приносить 600$) подскажите...

при вызове процедуры сортировка заложенная в нее не происходит
Собственно задача сделана, но т.к. преподу может взбрести в голову, что в решении нужно использовать процедуру, решил предугадать это. Но...

При использовании MySQLdb возможно ли задать путь к базе данных, и если да, то каким образом?
При использовании MySQLdb на Python возможно ли задать путь к базе данных, и если да, то каким образом?

Сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка)
Создать класс, содержащий массив и реализующий алгоритмы сортировки и бинарного поиска в этом массиве. Класс описать с помощью...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru