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

Трехпутевая поразрядная быстрая сортировка - C++

Восстановить пароль Регистрация
 
Allexina
Сообщений: n/a
02.04.2011, 15:05     Трехпутевая поразрядная быстрая сортировка #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
#include <vcl.h>
#pragma hdrstop
#include <time.h>
 
#include "Unit1.h"
#include "SortMarking.cpp"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
 
#define ch(A) digit(A, d)
int N = 10000;
int* Mas1;
void generator(int maxN);
 
template <class Item>
void quicksortX(Item a[], int l, int r, int d)
  { 
    int i, j, k, p, q; int v;
    if (r-l <= M) { insertion(a, l, r); return; }
    v = ch(a[r]); i = l-1; j = r; p = l-1; q = r;
    while (i < j)
      { 
        while (ch(a[++i]) < v) ;
        while (v < ch(a[--j])) if (j == l) break;
        if (i > j) break;
        exch(a[i], a[j]);
        if (ch(a[i])==v) { p++; exch(a[p], a[i]); }
        if (v==ch(a[j])) { q--; exch(a[j], a[q]); }
      }
    if (p == q)
      { if (v != '\0') quicksortX(a, l, r, d+1);
        return; }
    if (ch(a[i]) < v) i++;
    for (k = l; k <= p; k++, j--) exch(a[k], a[j]);
    for (k = r; k >= q; k--, i++) exch(a[k], a[i]);
    quicksortX(a, l, j, d);
    if ((i == r) && (ch(a[i]) == v)) i++;
    if (v != '\0') quicksortX(a, j+1, i-1, d+1);
    quicksortX(a, i, r, d);
  };
 
 
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::N1Click(TObject *Sender)
{
  time_t start;
  AnsiString s;
 
  start = clock();
  generator(N);
  Memo1->Lines->Add("ÈñõîГ*ûé Г¬Г*Г±Г±ГЁГў:");
  for(int i = 0; i<N; ++i) s = s + " " + IntToStr(Mas1[i]);
  Memo1->Lines->Add(s);
  quickSortX(Mas1, 0, N - 1, 3);
  Memo1->Lines->Add("");
  Memo1->Lines->Add("ÎòñîðòèðîâГ*Г*Г*ûé Г¬Г*Г±Г±ГЁГў:");
  s = "";
  for(int i = 0; i<N; ++i) s = s + " " + IntToStr(Mas1[i]);
  Memo1->Lines->Add(s);
  Memo1->Lines->Add("");
  Memo1->Lines->Add("Ïðîøëî " + AnsiString((clock() - start)/CLOCKS_PER_SEC) + " Г±ГҐГЄГіГ*Г¤.");
}
 
void generator(int maxN)
  {
    randomize();
    if(maxN<=0) return;
 
    if((Mas1=(int *)calloc(maxN,sizeof(int)))==NULL)
      {
        ShowMessage("Out of memorry!") ;
        exit(1);
      }
 
    for(int c=0;c<maxN;++c) Mas1[c]= random(1000) - random(1000);
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2011, 15:05     Трехпутевая поразрядная быстрая сортировка
Посмотрите здесь:

C++ Поразрядная сортировка
C++ Поразрядная сортировка MSD
Трехпутевая поразрядная быстрая сортировка C++
C++ Поразрядная сортировка символьных массивов
Поразрядная сортировка массива C++
C++ Поразрядная сортировка
Поразрядная сортировка C++
C++ Поразрядная сортировка

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

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

Текущее время: 01:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru