Имя пользователя:
Пароль:
 

Показать сообщение отдельно
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Drongo, с алгоритмом похоже всё в порядке. Интересно, на каком компиляторе вы собирали и отлаживали? у меня сразу при входе в bucketSort вышла ошибка stack overflow. Варианта решения 2: сказать компилятору увеличить стек или использовать динамическую память. Вот в таком виде всё заработало:
Код: Выделить весь код
void bucketSort(int ar[], const int sz)
{
   const int Rasryad = 10;
   const int Position = 100000;

   vector<int> mem_TempArray(Position*Rasryad);
   int* TempArray[Rasryad];
   
   for(unsigned n=0; n<Rasryad; ++n) TempArray[n] = &mem_TempArray[Position*n];
   
   int /*lenght = 0, temp,*/ number = 1, Ras, counter = 0;;

   // Распределяющий проход
   for(int i = 0; i < 5; i++){ // Проход столько, сколько разряда у числа
       for(int j = 0; j < sz; j++){ // Проход столько, сколько чисел в массиве
           Ras = ar[j] / number % 10; // Вычисление позиции разряда
           TempArray[Ras][j] = ar[j]; // Расположение соответсвенно разряду
         }
       // Собирающий проход после каждого распределяющего
	   counter = 0;
       for(int a = 0; a < Rasryad; a++){
           for(int b = 0; b < Position; b++){
               if(TempArray[a][b] != 0){
                  ar[counter++] = TempArray[a][b];
                  TempArray[a][b] = 0;
                 }
             }
         }
       number *= 10;
     }

    for(int i = 0; i < sz; i++) // Вывод сортированного массива
      cout<<setw(8)<<ar[i];
}
//-------------------------------------------------------------------------
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:32, 07-01-2008 | #8