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

Сортировки - C++

Восстановить пароль Регистрация
 
fakesc
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 2
04.10.2013, 12:53     Сортировки #1
Вообщем у меня было задание отсортировать по убыванию массивы (заданный рандомно, по убыванию, по возрастанию)
Критерий: количество перестановок, что собственно и вызвало у преподавателя вопросы

Простые вставки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void prostObratn(int *a,int n)
{
  int  x, i, j,temp;
  for ( i=1; i < n; i++)
   { 
    x = a[i];
    for ( j=i-1; j>=0 && a[j] < x; j--)
    {
    a[j+1] = a[j];gchng++;
 
    }
    a[j+1] = x;gchng++;
    }
}
Пирамидальная сортировка:
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
void sift(int *A,int L,int R) 
{
int i,j,x,k; 
i=L; j=2*L+1; 
x=A[L]; 
if ((j<R) && (A[j]>A[j+1]))
    j++;
while ((j<=R) && (x>A[j])) 
    { 
    k=A[i];
    A[i]=A[j];
    A[j]=k;
    gchng+=3;
    i=j;
    j=2*j+1;
    if ((j<R) && (A[j]>A[j+1]))
        j++;
    }
}
void HeapSort(int *A,int n) 
{
int L,R,x,i;
L=n/2; R=n-1;
while (L>0)
{
L=L-1;
sift(A,L,R);
}
while (R>0)
{ x=A[0]; A[0]=A[R]; A[R]=x;R--;
sift(A,L,R);}
}
Результаты:

http://img5.imageshack.us/img5/2259/4a3t.jpg

Вопрос преподавателя:


Почему количество перестановок для "простых вставок" и для "пирамидальной сортировки" при сортировке УЖЕ отсоротированного массива по УБЫВАНИЮ не является нолем. При пирамидальной я вроде как разобрался, так как это неустойчивая сортировка и массив будет считываться хаотично, вроде как. Поправьте, если неправ, а вот со вставками мне немного непонятно, в связи с этим и прошу помощи в ответе на вопрос
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ya_noob
_
200 / 144 / 9
Регистрация: 08.10.2011
Сообщений: 432
04.10.2013, 14:15     Сортировки #2
укажите ту строку для сортировки вставками, где происходит обмен значений
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
04.10.2013, 15:50     Сортировки #3
проблемка тут
Цитата Сообщение от fakesc Посмотреть сообщение
a[j+1] = x;gchng++;
И указанная перестановка осуществляется всегда.
Даже если смещать не надою.
huan
1 / 1 / 0
Регистрация: 30.09.2013
Сообщений: 22
04.10.2013, 18:36     Сортировки #4
gchng++ объясните пожалуйста начинающему, что это такое
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
04.10.2013, 18:56     Сортировки #5
В вашем случае
gchng - счетчик перестановок
а ++ оператор инкремента (увеличения на 1)
fakesc
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 2
04.10.2013, 18:58  [ТС]     Сортировки #6
да, спасибо
уже разобрался)
huan
1 / 1 / 0
Регистрация: 30.09.2013
Сообщений: 22
07.10.2013, 21:54     Сортировки #7
ужасно извиняюсь, но что такое инкремент я знаю. я не знаю где объявлено gchng, какие у него свойства?
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
07.10.2013, 21:59     Сортировки #8
huan,
Инкремент, инкрементирование (от англ. increment «увеличение») — операция во многих языках программирования, увеличивающая переменную. Обратную операцию называют декремент (уменьшение). Чаще всего унарная операция приводит переменную к следующему элементу базового типа (то есть для целых чисел — увеличивает на 1, для символьного типа даёт следующий символ в некоторой таблице символов и т. п.)


Судя по тому, что в коде функций объявления переменной gchng нет. Я делаю вывод что она является глобальной переменной.
huan
1 / 1 / 0
Регистрация: 30.09.2013
Сообщений: 22
07.10.2013, 23:56     Сортировки #9
Спасибо! ответьте пожалуйста какой алгоритм сортировки самый быстрый. У меня получается, что "подстановка" самая оптимальная. Правда сортировать пришлось связанный список. Элементов несколько миллионов. Попробовал три разных способа.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2013, 00:02     Сортировки
Еще ссылки по теме:

C++ Сделать так, чтобы после сортировки вектора указатель показывал на тот же элемент, что и до сортировки
C++ Напишите функцию сортировки, похожую на функцию которая использовалась для сортировки массивов, с той разницей, что ее а
C++ Сортировки С++

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

Или воспользуйтесь поиском по форуму:
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
08.10.2013, 00:02     Сортировки #10
не скажу не изучал
попробуйте для начала почитать тут.
Yandex
Объявления
08.10.2013, 00:02     Сортировки
Ответ Создать тему
Опции темы

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