Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Evgen2sat
19 / 19 / 13
Регистрация: 22.11.2011
Сообщений: 101
1

Сбалансированное N-ленточное слияние

14.02.2012, 20:21. Просмотров 849. Ответов 0
Метки нет (Все метки)

Возник такой вопрос: нужно произвести внешнюю сортировку. Я не пойму ее сути, объясните понятно, как она производится. И подскажите как все-таки сделать это N-ленточное слияние. Я написал код (не знаю правильно ли я его сделал для N-ленточного слияния или нет), как дальше эти ленты объединять?
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
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <stdlib.h>
main()
{
    
    int i,j,tmp,pos;
    int n[9]={5,9,1,4,78,15,168,852,11};//Исходный массив.Делю на три части
    setlocale(LC_ALL, "Russian");
    printf("Первая лента = %d %d %d\n", n[0],n[1],n[2]);
    printf("Вторая лента = %d %d %d\n", n[3],n[4],n[5]);
    printf("Третья лента = %d %d %d\n", n[6],n[7],n[8]);
    printf("Первая отсортированная лента = ");
    for(i=0;i<3;i++)//сортируется первая часть по пузырьковому методу
    {
        pos=i;
        tmp=n[i];
        for(j=i+1;j<3;j++)
        {
            if(n[j]<tmp)
            {
                pos=j;
                tmp=n[j];
            }
        }
        n[pos]=n[i];
        n[i]=tmp;
        
        printf("%d ",n[i]);
    }
 
    printf("\nВторая отсортированная лента = ");
for(i=3;i<6;i++)//сортируется вторая часть по пузырьковому методу
    {
        pos=i;
        tmp=n[i];
        for(j=i+1;j<6;j++)
        {
            if(n[j]<tmp)
            {
                pos=j;
                tmp=n[j];
            }
 
        }
        n[pos]=n[i];
        n[i]=tmp;
        printf("%d ",n[i]);
    }
 
printf("\nТретья отсортированная лента = ");
for(i=6;i<9;i++)//сортируется третья часть по пузырьковому методу
    {
        pos=i;
        tmp=n[i];
        for(j=i+1;j<9;j++)
        {
            if(n[j]<tmp)
            {
                pos=j;
                tmp=n[j];
            }
 
        }
        n[pos]=n[i];
        n[i]=tmp;
        printf("%d ",n[i]);
    }
    getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2012, 20:21
Ответы с готовыми решениями:

Сбалансированное N-ленточное слияние
Помогите, дайте пример кода как это происходит: Сбалансированное N-ленточное слияние Общей...

Построить идеально сбалансированное бинарное дерево поиска и обеспечить поиск указанных записей
Вообщем написал программу и не уверен, что правильно работает балансировка( При нечетном...

Слияние строк.
Помогите пожалуйста реализовать задачу.Дано 2 строки ,реализовать функцию с помощью указателей...

Естественное двухпутевое слияние
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int Merge (int mass1, int mass2) { int...

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2012, 20:21

Слияние массивов - пояснить принцип
# include &lt;stdio.h&gt; #define N 50 void sort (int y, int x) { int temp,i,j; for...

Слияние двух текстовых файлов
необходимо прогу оформить в ввиде функции, вызываемой из основной программы. Целой переменной n...

Слияние двух текстовых файлов
Пожалуйста,помогите написать вот такую программу : Произвести слияние двух текстовых файлов. Имена...


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

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

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