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

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

Войти
Регистрация
Восстановить пароль
 
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 132
#1

Правильно ли сделано. Быстрая сортировка - C++

20.10.2013, 23:52. Просмотров 308. Ответов 3
Метки нет (Все метки)

Всем добрый вечер. Собственно вопрос. Правильно ли будет так вести подсчет количества операций сортировки?
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
int nsort = 0;
void sort(int *mas, int i, int j)
{
    int c, x, m, k;
    m = i; k = j;
    c = mas[(m + k) / 2]; // центральный элемент
    do
    {
        nsort++;
        // процедура разделения
        while (mas[m] < c) {m++; nsort++;}
        while (mas[k] > c) {k--;  nsort++;}
        if (m <= k)
        {
            nsort++;
            x = mas[m];
            mas[m] = mas[k];
            mas[k] = x;
            m++;
            k--;
        }
    } while (m < k);
    // рекурсивные вызовы, если есть что сортировать
    if (i < k){
        sort(mas, i, k);
    }
    if (m < j) {
        sort(mas, m, j);
    }
}
Добавлено через 4 часа 12 минут
nsort - счетчик
не ужели ни кто не знает
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2013, 23:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Правильно ли сделано. Быстрая сортировка (C++):

Правильно ли сделано задание - C++
Задание состоит в том что бы Определить является ли число k степенью 3. Не могли бы вы помочь объяснить в чем ошибка? # include...

Правильно ли сделано задание - C++
Нужно удалить максимальный элемент в массиве. Не могли бы вы помочь объяснить в чем ошибка? #include &lt;iostream.h&gt; #include &lt;conio.h&gt; ...

Быстрая сортировка (сортировка Хоара) для связных списков - C++
есть у кого готовый алгоритм? или подскажите как реализовать

Быстрая сортировка(сортировка Хоара). Отсортировать фрагмент массива - C++
Мне нужно отсортировать фрагмент массива, расположенный между первым и последним отрицательным элементом. Немогу понять как устоновить...

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

C/C++ FAQ :: Быстрая сортировка (сортировка Хоара) - C++
Вопрос, скорее академический, по мотивам реализации. Вот в faq приведена реализация этого метода сортировки на C++. В коде есть следующий...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
gng
644 / 490 / 133
Регистрация: 08.09.2013
Сообщений: 1,326
21.10.2013, 09:12 #2
Если под операцией сортировки понимать перестановку элементов, то, очевидно, нет.
Ваша программа уже для массива {1,2} выдаст одну операцию, а для {2,1} - целых две.
Достаточно оставить один nsort++; внитри if
0
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 132
21.10.2013, 10:08  [ТС] #3
Колво. операций для массива {1,2} - 3
Для {2,1} - 2
Что-то здесь не так

Нужно "вычислить количество произведенных сравнений между элементами массива".
0
gng
644 / 490 / 133
Регистрация: 08.09.2013
Сообщений: 1,326
21.10.2013, 11:01 #4
Цитата Сообщение от Fareiro Посмотреть сообщение
Нужно "вычислить количество произведенных сравнений между элементами массива"
Тогда при каждом сравнении элементов приплюсовываете единицу к счетчику. Сравнения элементов массива у вас только в двух идущих подряд while.
Для каждого while количество сравнений = количесво проходов цикла + 1.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2013, 11:01
Привет! Вот еще темы с ответами:

Сортировка расчёской и быстрая сортировка - C++
В файле in.txt записана последовательность целых чисел. Заданными методами отсортировать числа и записать в файлы out1.txt и out2.txt....

Сортировка Хоара / Быстрая сортировка - C++
Доброго времени суток. Написал реализацию алгоритма быстрой сортировки. void SortHhoar(int *arr,int f,int l)//Хоара { int mid = (f...

Быстрая сортировка - C++
Задача: пользователь задает количество элементов массива (макс. - 500 000), вводит их, затем задает количество запросов (макс. - 10000) и...

Быстрая сортировка - C++
Здравствуйте уважаемые форумчане киберфорума. Имеется проблеммка с задачкой, могли бы вы помочь мне ее решить? Имеем двумерный...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.10.2013, 11:01
Ответ Создать тему
Опции темы

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