Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Каскадное слияние со специальным распределением - C++

09.07.2012, 23:49. Просмотров 634. Ответов 0
Метки нет (Все метки)

Здравствуйте, я хочу реализовать на C++ алгоритм каскадного слияния со специальным распределением. Прочитал материал из Кнута об этом алгоритме и не могу вникнуть, как написать программу на C++, которая работала бы с ним. Что она должна в целом делать?

Добавлено через 1 час 47 минут
Нашел код на Delphi (с таймерами процедур, они не нужны), кто-нибудь может преобразовать его в C++?

Delphi
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
var
  Form1: TForm1; p,q,s,d:integer;
  const n =10000000;
  var
 A:array[1..n]of integer;
 L:array[1..n]of integer;
 W:integer;
 Raz:integer;
 d1, d2, d3, d4:TDateTime;
implementation
{$R *.dfm}
  Procedure Sort(p,q : integer); {p,q — индексы начала и конца сортируемой части массива}
Var i,j,r,T : integer;
Begin
 if p<q then {массив из одного элемента тривиально упорядочен}
 begin
  r:=A[p];
  i:=p-1;
  j:=q+1;
  while i<j do
   begin
    repeat
     i:=i+1;
    until A[i]>=r;
    repeat
     j:=j-1;
    until A[j]<=r;
    if i<j then
     begin
      T:=A[i];
      A[i]:=A[j];
      A[j]:=T;
     end;
   end;
  Sort(p,j);
  Sort(j+1,q);
 end;
End;
procedure TForm1.Button1Click(Sender: TObject);  //заполнение
  var
  B:array[1..n] of integer;
 k,j:integer;
 begin    begin
W:=StrToInt(Edit1.Text);
Raz:=StrToInt(Edit4.Text);
StringGrid1.ColCount:=W;
StringGrid2.ColCount:=W;
StringGrid3.ColCount:=W;
end;
for j:=1 to w do begin
  A[j]:=Random(Raz);
  L[j]:=A[j];
   StringGrid1.Cells[j-1,0]:=IntToStr(a[j]); Randomize;
   end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var k,m:integer;
h,min,s,ms:word;
B:array[1..n] of integer;
begin
 Label7.Caption:=Floattostr(time);
 h:=0;min:=0;s:=0;ms:=0;
d1:=Now;
 for k:=1 to w do begin
   Sort(p,k);
  Sort(k+1,q); end;
  for m:=1 to w do begin
   StringGrid2.Cells[m-1,0]:=IntToStr(a[m]); end;
   Decodetime(Time-Strtofloat(label7.caption),h,min,s,ms);
     label7.Caption:=inttostr(s)+' ' +'сек' + ' '+ Inttostr(ms)+ ' '+'мсек';
 end;
  Procedure Sort1(p,q : integer); {p,q — индексы начала и конца сортируемой части массива}
Var i,j,r,T : integer;
Begin
 if p<q then {массив из одного элемента тривиально упорядочен}
 begin
  r:=L[p];
  i:=p-1;
  j:=q+1;
  while i<j do
   begin
    repeat
     i:=i+1;
    until L[i]<=r;
    repeat
     j:=j-1;
    until L[j]>=r;
    if i<j then
     begin
      T:=l[i];
      L[i]:=L[j];
      L[j]:=T;
     end;
   end;
  Sort1(p,j);
  Sort1(j+1,q);
 end;
End;
procedure TForm1.Button3Click(Sender: TObject);
var k,m:integer;
hi,mini,si,msi:word;
B:array[1..n] of integer;
begin
 Label8.Caption:=Floattostr(time);
 hi:=0;mini:=0;si:=0;msi:=0;
 for k:=1 to w do begin
   Sort1(p,k);
  Sort1(k+1,q); end;
  for m:=1 to w do begin
   StringGrid3.Cells[m-1,0]:=IntToStr(l[m]);end;
    Decodetime(Time-Strtofloat(label8.caption),hi,mini,si,msi);
     label8.Caption:= inttostr(si)+' ' +'сек' + ' '+ Inttostr(msi)+ ' '+'мсек';
 end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2012, 23:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Каскадное слияние со специальным распределением (C++):

Сортировка методом каскадного слияния со специальным распределением - C++
Задание - реализовать этот алгоритм для однмоерного динамического массива. попытки почитать Кнута успехом не увенчались - не понятно. Буду...

Вывести числа со специальным форматом - C++
Всем привет! Есть задание: &quot;Напишите программу, считывающую из файла числа, разделенные пробелами, и выводящую в другой файл числа,...

Строка: Проверить, является ли заданный символ буквой, числом или специальным символом? - C++
Напишите программу, в которой пользователь должен ввести 1 символ. По окончанию программа должна вывести, является ли этот символ буквой,...

Сортировка списка распределением - C++
(сортировка распределением) Упорядочить список Q двадцатибуквенных слов в алфавите П= {A,B,C} лексикографически ( т.е. так, как это принято...

Подкорректировать код (сортировка распределением) - C++
Вечер добрый, знатоки. Компилятор ошибку не отлавливает. Ошибка логическая и вылет программы происходит при входе в цикл: while (j &gt; (l...

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2012, 23:49
Привет! Вот еще темы с ответами:

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

Ошибка с распределением цикла по потокам в Open MP - C++
нужно цикл for разделить м/у потоками,но почему то ошибки выдает ,первый раз с Open MP работаю,подскажите как исправить ,пожалуйста... пишу...

Shared_ptr и классы с динамическим распределением памяти - C++
Корректен ли класс? Не будет каких-нибудь проблем с памятью или других? Допустим, это заготовка под класс &quot;Массив&quot;. #include...

генерация случайных чисел с заданным распределением вероятности - C++
Здравствуйте. Нужна ваша помощь. Необходим алгоритм или же пример. где реализована генерация случайных чисел с заданным распределением...


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

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

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