Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.58/19: Рейтинг темы: голосов - 19, средняя оценка - 4.58
13 / 13 / 0
Регистрация: 17.05.2012
Сообщений: 80

Алгоритм сортировки

17.05.2012, 08:44. Показов 3876. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
пацаны ребята помогите, реализовал два алгоритма на C++, алгоритм сортировки пирамидальный(кучей) и быстрой сортировки, все они сортируют массив в любом случае, но иногда например ввожу последовательность 2 1 3 45 12 5 23 6 4 89 2 он ее сортирует так: 0 1 2 2 3 4 5 12 23 45 и все и не дописывает в конце последний элемент, если на выходи когда массив уже отсортирован в цикле когда его отображаю, число итераций увеличить на единицу т е итераций больше чем размер массива, то тогда все получается и он дописывает недостающий символ в конце, но нуль остается в самом начале. вопрос, почему появляется нуль и как от него избавиться? спасибо

вот код:

быстрая сортировка:

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
using namespace std;
 
void qicksort(int *a, int p, int r);
int partition(int *a, int p, int r);
 
int main(int argc, char *argv[])
{
 
    int *a;
    int size;
 
    cin >> size;
 
    a=new int (size);
 
    for(int i=0; i<size; i++)
    {
        cin >> a[i];
    }
 
    qicksort(a,0,size);
 
    for(int i=0; i<size; i++)
    {
        cout << a[i] << " ";
    }
 
    return 0;
}
 
void qicksort(int *a, int p, int r)
{
 
    int q;
 
    if(p<r)
    {
        q=partition(a,p,r);
        qicksort(a,p,q-1);
        qicksort(a,q+1,r);
    }
 
}
 
int partition(int *a, int p, int r)
{
 
    int t,k,x,i;
 
    x=a[r];
    i=p-1;
 
    for(int j=p; j<=(r-1); j++)
    {
        if(a[j]<=x)
        {
            i++;
            t=a[i];
            a[i]=a[j];
            a[j]=t;
        }
    }
 
    k=a[i+1];
    a[i+1]=a[r];
    a[r]=k;
 
    return (i+1);
 
}
сортировка кучей или пирамидальная:

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <iostream>
using namespace std;
 
void max_heapify(int *a, int i, int size);
void build_max_heap(int *a, int i, int size);
void heapsort(int *a, int i, int size);
int parent(int i);
int left(int i);
int right(int i);
 
int main(int argc, char *argv[])
{
    int *a;
    int size,i;
 
    cin >> size;
 
    i=0;
 
    a=new int(size);
 
    for(int i=0; i<size; i++)
    {
        cin >> a[i];
    }
 
    heapsort(a,i,size);
 
    for(i=0; i<size; i++)
    {
        cout << a[i] << " ";
    }
 
    delete [] a;
 
    return 0;
}
 
int parent(int i)
{
    return (i/2);
}
 
int left(int i)
{
    return (2*i);
}
 
int right(int i)
{
    return ((2*i)+1);
}
 
void max_heapify(int *a, int i, int size)
{
    int l,r;
    int largest;
    int t=0;
 
    l=left(i);
    r=right(i);
 
    if((l<=size) && (a[l]>a[i]))
    {
        largest=l;
    }
    else
    {
        largest=i;
    }
 
    if((r<=size) && (a[r]>a[largest]))
    {
        largest=r;
    }
 
    if(largest!=i)
    {
        t=a[i];
        a[i]=a[largest];
        a[largest]=t;
        max_heapify(a,largest,size);
    }
}
 
void build_max_heap(int *a, int i, int size)
{
    i=size;
 
    for(int i=(size/2); i>=0; i--)
    {
        max_heapify(a,i,size);
    }
}
 
void heapsort(int *a, int i, int size)
{
    int t=0;
 
    build_max_heap(a,i,size);
 
    for(int i=size; i>=1; i--)
    {
        t=a[0];
        a[0]=a[i];
        a[i]=t;
        size=size-1;
        max_heapify(a,0,size);
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.05.2012, 08:44
Ответы с готовыми решениями:

Алгоритм сортировки
учитель попросил написать сортировку массива по возрастанию в общем виде #include &lt;stdio.h&gt; #include &lt;string.h&gt; int...

Алгоритм сортировки
Здравствуйте, подскажите пожалуйста какой алгоритм можно использовать при решении такой задачи: Дана строка char * из букв и цифр...

Алгоритм сортировки
Дан одномерный масив. мне в нем нужно отсортировать по возростанию только те числа масива которые простые, а остальные оставить на той...

21
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
18.05.2012, 12:05
Студворк — интернет-сервис помощи студентам
mmd, Разберите мой алгоритм, который на delphi, если не получается, то напишите...В таком случае я попробую разобрать ваш алгоритм, но доказать правильность алгоритма довольно сложно, особенно если это Qsort 3
0
13 / 13 / 0
Регистрация: 17.05.2012
Сообщений: 80
18.05.2012, 18:59  [ТС]
Цитата Сообщение от Ternsip Посмотреть сообщение
mmd, Разберите мой алгоритм, который на delphi, если не получается, то напишите...В таком случае я попробую разобрать ваш алгоритм, но доказать правильность алгоритма довольно сложно, особенно если это Qsort 3
я уже разобрался в чем ошибка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.05.2012, 18:59

Алгоритм пузырьковой сортировки
#include&lt;iostream.h&gt; #define SIZE 5 void bsort (int iArray, int n); int main() { char ch; int ii; int iArray ; for(ii =...

Алгоритм сортировки Шелла
http://lord-n.narod.ru/download/books/walla/programming/Spr_po_C/21/2107.htm здесь сказано, что существует, некая последовательность...

Обобщенный алгоритм сортировки
как это можно сделать??? необходимо модифицировать шаблонный класс связного списка: добавить метод, реализующий обобщенный ...

Не алгоритм быстрой сортировки
Просто как подключить эту функцию Не работаеееет #include&lt;iostream&gt; #include&lt;iomanip&gt; #include &lt;algorithm&gt; using namespace...

Алгоритм сортировки Шелла
Расписать по шагам сортровку массива с помощью алгоритма сортировки шелла:35,20,24,13,39,17,29,40,16,40,12,39,26


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru