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

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

Войти
Регистрация
Восстановить пароль
 
fakesc
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 2
#1

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

04.10.2013, 12:53. Просмотров 353. Ответов 9
Метки нет (Все метки)

Вообщем у меня было задание отсортировать по убыванию массивы (заданный рандомно, по убыванию, по возрастанию)
Критерий: количество перестановок, что собственно и вызвало у преподавателя вопросы

Простые вставки:
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

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


Почему количество перестановок для "простых вставок" и для "пирамидальной сортировки" при сортировке УЖЕ отсоротированного массива по УБЫВАНИЮ не является нолем. При пирамидальной я вроде как разобрался, так как это неустойчивая сортировка и массив будет считываться хаотично, вроде как. Поправьте, если неправ, а вот со вставками мне немного непонятно, в связи с этим и прошу помощи в ответе на вопрос
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2013, 12:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировки (C++):

Пример быстрой сортировки массива строк и сортировки методом выбора - C++
Добрый вечер. Скиньте пожалуйста пример быстрой сортировки массива строк и сортировки массива строк методом выбора. Очень срочно надо,...

Составить блок – схемы для шейкер- сортировки и сортировки Шелла - C++
Доброго времени суток, очень нужна ваша помощь в решении данной проблемы, буду бесконечно благодарен. Составить блок – схемы для шейкер-...

Составить программы для пузырьковой сортировки и сортировки посредством выбора с применением оператора while - C++
Доброго времени суток, очень нужна ваша помощь в решении данной проблемы, буду бесконечно благодарен. Составить программы для пузырьковой...

Сделать так, чтобы после сортировки вектора указатель показывал на тот же элемент, что и до сортировки - C++
Есть вектор(STL) элементов. У меня есть указатель на определенный элемент. Я хочу сделать так, чтобы после сортировки этого вектора...

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

Изменить метод "быстрой сортировки" на метод "сортировки вставками" - C++
Как изменить метод &quot;интеративной быстрой сортировки&quot; на метод &quot;сортировки вставками «с конца массива»&quot;? Нужно изменить только метод...

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


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

Сортировки - C++
Ребя сделайте пожалуйста одну из двух задачек, очень прошу( не сочтите за наглость, заранее огромное спасибо вам ! 1.В файле input.txt...

Сортировки - C++
Доброго времени суток друзья! Если вас сильно не затруднит, не могли бы вы мне сделать 2 задачки, до завтра сдать нужно ( Ну или одну,...

сортировки - C++
помогите пожалуйста написать эти сортировки: пузырек, вставками, шелл, поиск(находишь элемент и возращаешь его индекс)

Си++, Сортировки - C++
Написать программу, осуществляющую блочную сортировку одномерного массива


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

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

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