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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
kyzavr
2 / 2 / 0
Регистрация: 22.05.2013
Сообщений: 136
#1

Сортировка естественным слиянием - C++

09.06.2013, 10:41. Просмотров 1752. Ответов 1
Метки нет (Все метки)

Нету не у кого на примете решенной задачки?
Отсортировать бинарный файл, содержащий целые числа, в порядке убывания методом естественного слияния.
ну или кто может помочь переделать вот это? тут вроде дана эта сорт ток через текст файлы и по возрастанию
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
main()
{
      FILE *f, *f1, *f2, *z;
      int k, ks, n1, n2, flag1, flag2, a;
      
      do{
      //razdelenie
          f = fopen("int1.txt","r");
          f1 = fopen("temp1.txt","w");
          f2 = fopen("temp2.txt","w");
          if (!f || !f1 || !f2) 
          {
             perror ("Error open file");
             getch();
             return 1;
          }
          ks = 0; k = 1;
          fscanf (f, "%d", &n2);      
          while (!feof(f))
          {
             z = k?f1:f2;
             fprintf (z, "%d ", n2);
             while (fscanf (f, "%d", &n1) != EOF && n1>=n2)
             {
                fprintf (z, "%d ", n1);
                n2 = n1;
             }
             n2 = n1; ks++; k = !k; 
          }
          fclose (f);
          fclose (f1);
          fclose (f2);
      //slyanie
          f = fopen("int1.txt","w");
          f1 = fopen("temp1.txt","r");
          f2 = fopen("temp2.txt","r");
          if (!f || !f1 || !f2) 
          {
             perror ("Error open file");
             getch();
             return 1;
          }
          flag1 = fscanf (f1, "%d", &n1) != EOF;
          flag2 = fscanf (f2, "%d", &n2) != EOF;
          a = n1<n2?n1:n2;
          while (flag1 && flag2)
          {
             if (n1<=n2)
             {
                fprintf (f, "%d ", n1);
                a = n1;
                flag1 = fscanf (f1, "%d", &n1) != EOF;
             }
             else
             {
                fprintf (f, "%d ", n2);
                a = n2;
                flag2 = fscanf (f2, "%d", &n2) != EOF;
             }
             if ((n1<a || !flag1) && n2>=a && flag2)
                do
                {
                   fprintf (f, "%d ", n2);
                   a = n2;
                   flag2 = fscanf (f2, "%d", &n2) != EOF;
                }
                while (n2>=a && flag2);   
             if ((n2<a || !flag2) && n1>=a && flag1)
                do
                {
                   fprintf (f, "%d ", n1);
                   a = n1;
                   flag1 = fscanf (f1, "%d", &n1) != EOF;
                }
                while (n1>=a && flag1);   
          }
          if (flag1)
          {
             fprintf (f, "%d ", n1);
             while (fscanf (f1, "%d", &n1) != EOF)
                  fprintf (f, "%d ", n1);
          }
          if (flag2)
          {
             fprintf (f, "%d ", n2);
             while (fscanf (f2, "%d", &n2) != EOF)
                  fprintf (f, "%d ", n2);
          }
          fclose (f);
          fclose (f1);
          fclose (f2);
      }
      while (ks>1);
      return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2013, 10:41     Сортировка естественным слиянием
Посмотрите здесь:

Количество сравнений/перестановок в сортировке естественным слиянием - C++
Добрый день ! Никак не могу понять как создать счётчик и куда его вставить , лазил по форумах и не нашел всё равно , помогите , если кто-то...

Сортировка слиянием С++ - C++
Помогите пжлст написать программу со слиянием. Например вводим массивы A=1 2 3 и B= 4 5 6 и получить результат 1 2 3 4 5 6

Сортировка слиянием? - C++
Условие задачи &quot;Элементы файлов f1 и f2 упорядочены по не убыванию. Объединить эти элементы в один файл f3, также упорядоченный по не...

Сортировка с слиянием - C++
Добрый вечер! Помогите с подсчетом перестановок и сравнений при сортировке с слиянием. Вот нашел код, и ищу легкий способ чтоб посчитать,...

Сортировка слиянием - C++
Добрый вечер. C си начал совсем недавно работать, до этого был паскаль, делфи. Есть рабочий код на паскале, прошу помочь разобраться в чем...

Сортировка слиянием - C++
Нужен самый примитивный рабочий код желательно с комментарием. Спасибо

Сортировка слиянием - C++
void merg1(int* mas, int p, int q, int r) { int size1 = p + q; int size2 = r - q + 1; int *mas1 = new int; int *mas2 = new...

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

Сортировка слиянием - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; void Merge_Sort(int * a,int left, int right) { if (left &lt;...

Сортировка слиянием - C++
Нужен алгоритм сортировки массива слиянием. Массив из 1000 чисел, введенных рандомно. На visual c++ заранее большое спасибо.

сортировка слиянием - C++
программа должна выполнять сортировку строк слиянием с использованием указателей. #include&lt;iostream&gt; #include&lt;string.h&gt; ...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kyzavr
2 / 2 / 0
Регистрация: 22.05.2013
Сообщений: 136
12.06.2013, 21:11  [ТС]     Сортировка естественным слиянием #2
Не кто не знает(??
Ответ Создать тему
Опции темы

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