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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ C++ с чего начать ? http://www.cyberforum.ru/cpp-beginners/thread621552.html
Здравствуйте! с чего начать изучать С++, если базовых знаний нету. может какие-то книги есть хорошо написанные (точнее доступным языком) ? или видео уроки... в общем с чего начать чтобы въехать в эту...
C++ Как глобально объявить массив не заданной размерности Цель: при нажатии на button1 создается массив и заполняется рандомными числами, длину массива получаем из TextBox1. А при нажатии на button2, этот массив сортируется по возрастанию. Проблемы: если... http://www.cyberforum.ru/cpp-beginners/thread621539.html
Вывод ответа сервера C++
собственно сабаж. как выевести ответ сервера? думаю что через функцию recv, но проблема в том что я ничего не понимаю) и взял вотэтот пример для разбора. и ешё правельно ли я реализовал запрос к...
C++ Определить минимальный и максимальный элементы каждого столбца
Для заданной в файле матрицы A (n на m) определить минимальный и максимальный элементы каждого столбца. помогите плиз.
C++ Заполнение змейкой http://www.cyberforum.ru/cpp-beginners/thread621496.html
заполнение матрицы по диагонали змейкой по принципу 1 3 4 10 2 5 9 11 6 8 12 15 7 13 14 16. Программа работает при вводе данных с клавиатуры. А мне нужно, чтобы можно было данные брать и из...
C++ Можно ли спомощью такого цикла все элементы массива вывести в обратном порядке? можно ли спомощью такого цикла все элементы массива вывести в обратном порядке? for(i=n;i=0;i--) подробнее

Показать сообщение отдельно
Jack33
0 / 0 / 0
Регистрация: 09.07.2012
Сообщений: 11

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

09.07.2012, 23:49. Просмотров 633. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru