С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 03.12.2018
Сообщений: 46

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

22.04.2019, 20:21. Показов 1373. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Очень нужна помощь. Если программа, но она не работает. Есть куча мелких ошибок. Некоторые я не знаю как исправить. Очень прошу помощи.


#include <iostream>
#include <ctime>
#include <time.h>
#include <cstdlib>

using namespace std;

void bubbleSort(int* ptrArr, int SizeOfArray);//пузырьковая
void PullArray(int* ptrArr, int SizeOfArray);//массив
void Insertion (int* ptrArr, int SizeOfArray);//сортировка вставками*
void MargeSort (int* ptrArr, int left, int reght);//слияние*
void Marge(int* ptrArr, int b, int e, int m); //слияние под массивов*
void ShowArray(int* ptrArr, int SizeOfArray);
void selectionSort(int* ptrArr, int SizeOfArray); //выбором
void quickSort(int *ptrArr, int Left, int Right); // быстрая

int main()
{
setlocale(LC_ALL, "rus");
unsigned int start, finish;
int size;
cout << "Введите размер массива:";
while (!(cin >> size))
{
cin.clear();
while (cin.get() != '\n')
{
cout << "\tНеверно введённые данные.Введите их повторно.";
}
}

cout << "Тестирование Алгоритмов:" << endl;
cout << "________________________" << endl << endl;
int* ptrTest = new int[size];
PullArray(ptrTest, size);
bubbleSort(ptrTest, size);

cout << "Пузырьковая сортировка" << endl;
ShowArray(ptrTest, size);
PullArray(ptrTest, size);

cout << "Сортировка вставками" << endl;
Insertion(ptrTest, size);
ShowArray(ptrTest, size);

cout << "Сортировка слиянием" << endl;
MargeSort (ptrTest, left, right);
ShowArray(ptrTest, size);

cout << "Сортировка слиянием под массивов" << endl;
Marge(ptrTest, b, e, m) //слияние под массивов
ShowArray(ptrTest, size);

cout << "Сортировка выбором" << endl;
selectionSort(ptrTest, size);
ShowArray(ptrTest, size);

cout << "Быстрая сортировка" << endl;
quickSort(ptrTest, 0, size - 1);
ShowArray(ptrTest, size);

cout << "_______________________________________ ___" << endl;
cout << endl << "Начало проверки скорости работы алгоритмов" << endl << endl;
cin.get();
bool choice = true;
while (true)
{
cout << "Введите размер массива:";
while (!(cin >> size))
{
cin.clear();
while (cin.get() != '\n')
{
cout << "\tНеверно введённые данные.Введите их повторно.";
}
}

int* Arr = new int[size];

PullArray(Arr, size);
start = clock();
bubbleSort(Arr, size);
finish = clock();
cout << endl << "Время работы пузырьковой сортировки:" << (double)(finish - start) / CLOCKS_PER_SEC << " сек" << endl;

PullArray(Arr, size);
start = clock();
selectionSort(Arr, size);
finish = clock();
cout << endl << "Время работы сортировки выбором:" << (double)(finish - start) / CLOCKS_PER_SEC << " сек" << endl;

PullArray(Arr, size);
start = clock();
Insertion(ptrTest, size);
finish = clock();
cout << endl << "Время работы вставочной сортировки:" << (double)(finish - start) / CLOCKS_PER_SEC << " сек" << endl;

PullArray(Arr, size);
start = clock();
MargeSort (ptrTest, b, e);
finish = clock();
cout << endl << "Время работы сортировки слиянием:" << (double)(finish - start) / CLOCKS_PER_SEC << " сек" << endl;

PullArray(Arr, size);
start = clock();
quickSort(Arr, 0, size - 1);
finish = clock();
cout << endl << "Время работы быстрой сортировки:" << (double)(finish - start) / CLOCKS_PER_SEC << " сек" << endl;

delete[] Arr;
Arr = 0;
cout << "_______________________________________ ________________________________________ _____________" << endl;
cout << "Нажмите 0 ,если хотите прервать сеанс. Если хотите продолжить - введите любой другой символ:" << endl;
cin >> choice;
cout << "_______________________________________ ________________________________________ _____________" << endl;
}
system("pause");
}


void PullArray(int* ptrArr, int SizeOfArray)
{
srand(time(NULL));
for (int i = 0; i < SizeOfArray; i++)
{
ptrArr[i] = 1 + rand();
}
}

void ShowArray(int* ptrArr, int SizeOfArray)
{
for (int i = 0; i < SizeOfArray; i++)
{
cout << *(ptrArr + i) << " ";
}
cout << endl;
}

void bubbleSort(int* ptrArr, int SizeOfArray)
{
int tmp = 0;
for (int i = 0; i<SizeOfArray; i++)
{
for (int j = (SizeOfArray - 1); j >= (i + 1); j--)
{
if (ptrArr[j]<ptrArr[j - 1])
{
swap(ptrArr[j], ptrArr[j-1]);
}
}
}
}

void selectionSort(int* ptrArr, int SizeOfArray)//выбором
{
int j = 0;
int tmp = 0;
for (int i = 0; i<SizeOfArray; i++) {
j = i;
for (int k = i; k<SizeOfArray; k++) {
if (ptrArr[j]>ptrArr[k]) {
j = k;
}
}
swap(ptrArr[i], ptrArr[j]);
}
}

void Insertion (int* ptrArr, int SizeOfArray)//вставкой
{
int j = 0;
int tmp = 0;
for (int i = 0; i<SizeOfArray; i++) {
tmp=ptrArr[i];
j=i-1;
while ((j>=0)&&(ptrArr[j]>tmp))
{
ptrArr[j+1] = ptrArr[j];
j--;
}
ptrArr[j+1]=tmp;
}
}

void MargeSort (int* ptrArr, int left, int right)//слияние*
{
int b=left;
int e=right;
int pivot = ptrArr [(left + right)/2];
if (b>=e) return;
int m= (b+e)/2;
MargeSort (ptrArr, b, m);
MargeSort (ptrArr, m+1, e);
MargeSort (ptrArr, b, m, e);
}

void Marge(int* ptrArr, int b, int e, int m) //слияние под массивов
{

int j=b;
m=(b+e)/2;
int k= m +1;//индекс начала второго под массива
int count = e-n+1;
if (count <=1){
return;
}
int *tmp = new int [count];
for (int i = 0; i< count; ++i)
{
if ((j <m ) && (k<=e))
{
if (ptrArr[i] < ptrArr[k]){
tmp [i] = ptrArr[j];
j++;
}
else {
tmp[i]=ptrArr[k];
k++;
}
}
}

}

void quickSort(int *ptrArr, int Left, int Right)//быстрая
{
int b = Left;
int e = Right;
int pivot = ptrArr[(Left + Right) / 2];
do
{
while (ptrArr[b] < pivot)
++b;
while (ptrArr[e] > pivot)
--e;
if (b <= e)
{
swap(ptrArr[b], ptrArr[e]);
++b;
--e;
}
} while (b <= e);
if (e > Left)
quickSort(ptrArr, Left, e);
if (b < Right)
quickSort(ptrArr, b, Right);
}

Места, где выдает ошибку, выделила.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.04.2019, 20:21
Ответы с готовыми решениями:

Реализовать алгоритмы построения прямой: простой пошаговый алгоритм и алгоритмы Брезенхема
1. Написать на языке PASCAL программу, реализующую алгоритмы построения прямой: простой пошаговый алгоритм и алгоритмы Брезенхема для...

Циклические алгоритмы (Алгоритмы с одним циклом)
Доброго времени суток! Помогите пожалуйста написать программы на циклы в Delphi 7, а то я только с линейными и разветвляющиеся...

Алгоритмы сортировки массивов.Реализуйте алгоритмы сортировок данных массивов
Задания к лабораторной работе. Выполните приведенные ниже задания. 1. Даны два целочисленных массива 2. Реализуйте алгоритмы...

2
2 / 2 / 0
Регистрация: 03.12.2018
Сообщений: 46
26.04.2019, 09:04  [ТС]
очень нужна помощь!!!!
0
 Аватар для FFPowerMan
2156 / 1236 / 508
Регистрация: 11.10.2018
Сообщений: 6,237
26.04.2019, 09:47
Лучший ответ Сообщение было отмечено Marina_99 как решение

Решение

Цитата Сообщение от Marina_99 Посмотреть сообщение
C++
1
MargeSort (ptrArr, b, m, e);
- вводите 4 параметра, а надо 3, выше же написно. Merge - пишется с буквой "e" - слияние - Merge.

Добавлено через 1 минуту
Цитата Сообщение от Marina_99 Посмотреть сообщение
C++
1
void MargeSort (int* ptrArr, int left, int reght);//слияние*
- right пишется правильно.

Добавлено через 39 секунд
Цитата Сообщение от Marina_99 Посмотреть сообщение
C++
1
Marge(ptrTest, b, e, m) //слияние под массивов
- тут тоже надо 3 параметра.

Добавлено через 46 секунд
С 4 параметрами у Вас функция Marge().

Добавлено через 1 минуту
Цитата Сообщение от Marina_99 Посмотреть сообщение
C++
1
int count = e-n+1;
- здесь переменная n не определена.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.04.2019, 09:47
Помогаю со студенческими работами здесь

Алгоритмы LZ*
Здравствуйте! Вопрос такой: где можно взять описание и принцип работы всех (или большинства) алгоритмов LZ*?

Алгоритмы
Подскажите сейчас стоит задача разобраться с алгоритмами. Можно на PHP или без PHP. Сказали начать с суммы ряда и т.д. Посоветуйте, тяжело...

Алгоритмы
Помогите решить срочно до среды!!! Вывести на экран таблицу умножения для заданного числа n. (n-вводится с клавиатуры) Решить задачу...

Алгоритмы на C++
Здравствуйте. Посоветуйте книгу по Алгоритмам на C++, чем толще, понятнее и больше примеров - тем лучше :)

Алгоритмы
Найти радиус окружности,описанной вокруг треугольника по формуле R=a*b*c/4*(на крень из) p*(p-a)*(p-b)*(p-c) где Р-полупериметр ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru