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

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

Войти
Регистрация
Восстановить пароль
 
Gendalf147
3 / 5 / 0
Регистрация: 09.12.2012
Сообщений: 97
#1

Сортировка методом "быстрая сортировка" - C++

18.05.2014, 19:52. Просмотров 635. Ответов 1
Метки нет (Все метки)

Здравствуйте!

Имеется структура:

C++
1
2
3
4
5
6
7
8
9
struct BMS_Data
{
    int* SortNodesList;
    double* NodesX;
    double* NodesY;
    double* NodesZ;
    int SizeMKE;
};
BMS_Data *BMSData;
Описывается в глобальных переменных класса формы ... как то так.

Есть функция сортировки:

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
void QuickSort_Int_Test_Up(int* sarr,int j)
{
    int size;
    size=j;
    int k;
    k=0;
    int c;
    c=sarr[(int)(j/2)];
    int tmp;
    tmp=0;
    do
    {
        while (sarr[k]<c)
        {
            k++;
        }
        while (sarr[j]>c)
        {
            j--;
        }
        if (k<=j)
        {
            tmp=sarr[k];
            sarr[k]=sarr[j];
            sarr[j]=tmp;
            k++;
            j--;
        }
    }
    while (k<=j);
    if (j>0)
    {
        QuickSort_Int_Test_Up(sarr,j);
    }
    if (size>k)
    {
        QuickSort_Int_Test_Up(sarr+k,size-k);
    }
}
С обычным массивом типа int все работает прекрасно - алгоритм понятен.
Но вот с вещественными числами не хочет работать - выдает ошибку. Вот функция для double типа:

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
void QuickSort_Double_Test_Up(double* sarr,int j)
{
    int size;
    size=j;
    int k;
    k=0;
    double c;
    c=sarr[(int)(j/2)];
    double tmp;
    tmp=0;
    do
    {
        while (sarr[k]<c)
        {
            k++;
        }
        while (sarr[j]>c)
        {
            j--;
        }
        if (k<=j)
        {
            tmp=sarr[k];
            sarr[k]=sarr[j];
            sarr[j]=tmp;
            k++;
            j--;
        }
    }
    while (k<=j);
    if (j>0)
    {
        QuickSort_Double_Test_Up(sarr,j);
    }
    if (size>k)
    {
        QuickSort_Double_Test_Up(sarr+k,size-k);
    }
}
Наверняка адрес неправильно передается:

C++
1
QuickSort_Double_Test_Up(sarr+k,size-k);
Что делать, подскажите плиз=) ...

Добавлено через 2 часа 1 минуту
Почему же с int работает а с double нет? ... Я в builder 2006 работаю. С шаблонами код пробовал - тоже программа с ума сходит ...

Добавлено через 3 часа 30 минут
Как передать адрес на какой то элемент массива, чтобы функция понимала это?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2014, 19:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка методом "быстрая сортировка" (C++):

"Быстрая" сортировка с итерационным циклом вычисления медианы - C++
Написать программу на С++: &quot;Быстрая&quot; сортировка с итерационным циклом вычисления медианы. Для заданного интервала массива, в котором...

Быстрая сортировка. Нарушение прав доступа при чтении "0xfdfdfdfd" - C++
Всем доброго суток времени прошу помогите найти ошибку при компиляции ошибок нет, при запуску всплывает ошибка. работа. в Visual studio...

Быстрая сортировка: ошибка "Stack overflow" - C++
Не понмаю, пишет STACK OVERFLOUDED!!!! не знаю в чем проблема. #include &lt;iostream&gt; #include &lt;locale.h&gt; #include &lt;time.h&gt; using...

быстрая сортировка " разделяй и властвуй" - C++
задача : сортировать массив случайных чисел. алгоритм: * выбрать элемент, называемый опорным. * сравнить все остальные элементы с...

"Быстрая" сортировка - выдаётся ошибка - C++
Здарвствуйте, мне совсем недавно потребовалась &quot;Быстрая&quot; сортировка. Я взял алгоритм с wikibooks но компилятор подчёркивает &quot;swap()&quot; и...

"Быстрая" сортировка двумерного массива - C++
Помогите пожалуйста!!! Нужно реализовать &quot;быструю&quot; сортировку для двумерного массива. Не ругайте, я пока что новичок, для одномерного...

1
Gendalf147
3 / 5 / 0
Регистрация: 09.12.2012
Сообщений: 97
19.05.2014, 21:32  [ТС] #2
Я в функцию посылаю динамически создаваемый массив ...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2014, 21:32
Привет! Вот еще темы с ответами:

"быстрая" сортировка (вызов функции) - C++
Здраствуйте, :drink: по лабе надо сделать много сортировок.. все сделано кроме метода &quot;быстрой&quot; сортировки.. ...

Быстрая сортировка (сортировка методом Хоара) - C++
Ввести массив x1,x2,...,x20 в диапазоне . Требуется расположить отрицательные элементы в порядке убывания. Вывести массивы до и после...

Сортировка одномерного массива методом обмена ("пузырьком") - C++
Имеется одномерный массив размерностью n, заполняемый генератором случайных чисел. Результат выводится на экран в 5 столбцов. Нужно...

Сортировка двумерного массива методом вставок с "конфеткой" - C++
Доброго времени суток. Помогите разобраться со следующим заданием (в форуме С мне не помогли): Необходимо отсортировать двумерный...


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

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

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