Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2010, 12:45   #1
Niki_FM
Новичок
Джуниор
 
Регистрация: 29.01.2010
Сообщений: 0
Стрелка Блок-схема под сортировку массивов

Задача: Алгоритм сортирует записи r1,...rn, используя вспомогательную таблицу COUNT[u],..., COUNT[v] в предположении что все ключи - целые числа в диапазоне u<=Kj<=v, 1<=j<=N. На последнем этапе выполнения алгоритма все записи в требуемом порядке переносятся в область выводы S1,..., Sn.

Вот программа:

Код:
#include "Sorter.h"
#include <math.h>
CSorter::CSorter( int size , int limit)
{
        arrSize = size;
        arrayToSort = new int [arrSize];
        generateRandomArray ( arrSize , limit );
}

CSorter::~CSorter()
{
        if(arrayToSort != NULL)
        {
                delete[] arrayToSort;
                arrayToSort = NULL;
        }
}

AnsiString CSorter::getArray ( int sortType )
{
        AnsiString strSortedArray("");
        int *buf = new int[arrSize];
        if ( sortType == 0 )
                buf = sortByShell();
        if ( sortType == 1 )
                buf = countSort();
        if ( sortType == 2)
                buf = arrayToSort;
        for (int i = 0; i < arrSize; i++)
                strSortedArray += "{" + IntToStr( buf[i] ) + "}";
        if(buf != arrayToSort && buf != NULL)
        {
                delete[] buf;
                buf = NULL;
        }
        return  strSortedArray;
}

int* CSorter::sortByShell( )
{
    int* sortedArray = arrayToSort;
    int d = arrSize, i, j;
    while (d > 0)
    {
        d /= 2;
 
       for (i = d; i < arrSize; i++) {
            int tmp = sortedArray[i];
            for (j = i-d; (j >= 0) && (sortedArray[j] > tmp); j -= d) {
                sortedArray[j+d] = sortedArray[j];
            }
            sortedArray[j+d] = tmp;
        }
    }
    return sortedArray;
}

int *CSorter::countSort()
{
        int *sortedArray = new int[arrSize];
        int **Count = new int*[2];
        for (int i = 0; i < 2; i++)
                Count[i]  = new int [arrSize];
        for (int i = 0; i < arrSize; i++)
                Count[0][i] = arrayToSort[i];
        for (int i = 0; i < arrSize; i++ )
                Count[1][i] = 0;
        for ( int i = arrSize - 1; i >= 1; i-- )
                for ( int j = i - 1; j >= 0; j --)
                {
                        if (arrayToSort[i] > arrayToSort[j])
                                Count[1][i]++;
                        else
                               Count[1][j]++;
                }
        for ( int i = 0; i < arrSize; i++)
                sortedArray[ Count[1][i] ] = Count[0][i];
        delete[] Count;
        return sortedArray;
}

int* CSorter::bubbleSort( int *array)
{
        int buf(0);
        if(array == NULL)
                return NULL;
        for (int i = 1; i <= arrSize ; i ++)
                for(int k = i  - 1; k < arrSize - i; k++)
                        if( array[k] > array[k+1] )
                        {
                                buf = array[k + 1];
                                array[k  + 1] = array[k];
                                array[k] = buf;
                        }
       return array;
}

void CSorter::generateRandomArray ( int size , int limit )
{
        if( size <= 0 || limit <= 0)
           return;
        for ( int i = 0; i < size; i++ )
                arrayToSort[i] = abs( rand ()%limit ) ;
}
Очень нужна помощь. Заранее благодарна.
Niki_FM вне форума Ответить с цитированием
Старый 29.01.2010, 13:49   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

нарисуюблок-схему за вознаграждение
ICQ 395546218
rrrFer вне форума Ответить с цитированием
Старый 29.01.2010, 22:52   #3
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Пиши в ЛС, обсудим.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 30.01.2010, 18:29   #4
пауэрлифтинг
Заблокирован
 
Регистрация: 11.12.2009
Сообщений: 133
По умолчанию

icq: 136665509
пауэрлифтинг вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блок схема Лёха Помощь студентам 32 18.12.2010 18:42
Блок схема алгоритма программы и схема взаимодействия модулей. Lazio Фриланс 3 02.12.2009 23:10
Блок-схема Юльчик18 Помощь студентам 3 11.10.2009 14:46
Блок схема Foxtrot_1 Общие вопросы C/C++ 4 22.06.2009 23:08
5 задач на сортировку массивов Kremnik Паскаль, Turbo Pascal, PascalABC.NET 5 21.12.2008 01:35