Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 17

Иллюстрация быстрой сортировки

18.10.2016, 22:21. Показов 2087. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят,необходимо написать программу похожую на ту,которая тут Визуализация сортировки массива
Помогите преобразовать данный код на С++ или написать новый.
Заранее огромное спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.10.2016, 22:21
Ответы с готовыми решениями:

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

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

Алгоритм быстрой сортировки
Написать программу, реализующую алгоритм быстрой сортировки(рекурсивный) для массива целых чисел.

17
 Аватар для Ryuk
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
19.10.2016, 04:07
vinil_man, с чем собственно возникают проблемы? Пишите, поможем.
0
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 17
19.10.2016, 08:34  [ТС]
Ryuk, проблема возникает в выборе соответствующий функций в плюсах..
0
 Аватар для Ryuk
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
19.10.2016, 13:33
vinil_man, их надо не выбирать. Их надо создавать)
Напишите обычную сортировку чисел. Привяжите к ним столбцы (если i-й элемент массива равен 3, значит рисуем 3 кубика вверх и т.д.). А дальше, когда сортируете числа, двигайте еще и столбцы, в том же массиве.
2
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.10.2016, 15:41
Лучший ответ Сообщение было отмечено vinil_man как решение

Решение

C++ (Qt)
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
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QTimer>
#include <QVector>
#include <random>
 
#include "canvas.h"
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
private slots:
    void on_pushButton_start_clicked();
    void on_tmr();
 
private:
    Ui::MainWindow *ui;
    std::default_random_engine generator;
    QVector<int> arr;
    int ii;
    QTimer tmr;
};
 
#endif // MAINWINDOW_H
C++ (Qt)
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
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
#include <chrono>
#include <algorithm>
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow),
    generator(std::chrono::system_clock::now().time_since_epoch().count())
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_pushButton_start_clicked()
{
    std::uniform_int_distribution<int> d(ui->spinBox_min->value(), ui->spinBox_max->value());
    arr.resize(ui->spinBox_count->value());
    for (int &i : arr) i = d(generator);
    ii = 0;
    connect(&tmr, SIGNAL(timeout()), this, SLOT(on_tmr()));
    tmr.start(250);
    ui->pushButton_start->setEnabled(false);
}
 
void MainWindow::on_tmr()
{
    for (int i = ii; i < arr.size(); ++i)
    {
        int min = i;
        for (int j = i + 1; j < arr.size(); ++j)
            if (arr[j] < arr[min])
                min = j;
 
        if (min != i)
        {
            std::swap(arr[i], arr[min]);
            ui->widget_canvas->Draw(arr);
            ii = i + 1;
            return;
        }
    }
    disconnect(&tmr, SIGNAL(timeout()), this, SLOT(on_tmr()));
    tmr.stop();
    ui->pushButton_start->setEnabled(true);
}
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef CANVAS_H
#define CANVAS_H
 
#include <QWidget>
 
class Canvas : public QWidget
{
    Q_OBJECT
public:
    explicit Canvas(QWidget *parent = 0);
 
signals:
 
public slots:
    void Draw(QVector<int> a);
 
protected:
    void paintEvent(QPaintEvent *event);
    QVector<int> arr;
};
 
#endif // CANVAS_H
C++ (Qt)
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
#include "canvas.h"
 
#include <QPainter>
 
Canvas::Canvas(QWidget *parent) : QWidget(parent)
{
}
 
void Canvas::Draw(QVector<int> a)
{
    arr = a;
    update();
}
 
void Canvas::paintEvent(QPaintEvent *event)
{
    QPainter painter;
    painter.begin(this);
 
    for (int i = 0; i < arr.size(); ++i)
        if (i % 2 == 0) painter.fillRect(15 * i, height() - 15 * arr[i], 15, 15 * arr[i], Qt::GlobalColor::blue);
        else painter.fillRect(15 * i, height() - 15 * arr[i], 15, 15 * arr[i], QColor(255, 170, 0));
 
    painter.setPen(QColor(0, 85, 0));
    for (int i = 0; i < height(); i += 15)
        painter.drawLine(0, height() - i, width(), height() - i);
    for (int i = 0; i < width(); i += 15)
        painter.drawLine(i, 0, i, width());
 
    painter.end();
}
Миниатюры
Иллюстрация быстрой сортировки  
2
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 17
19.10.2016, 18:23  [ТС]
nmcf, не могли бы немного обьъяснить что это и с чем его едят?(как это работает)
Спасибо большое!
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.10.2016, 18:36
Берёшь Qt, делаешь форму, добавляешь класс canvas и получается это.
0
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 17
19.10.2016, 20:14  [ТС]
nmcf, слушай,а тебе по силам сделать такое же в MFC приложении?
0
19.10.2016, 20:19

Не по теме:

Меня Qt вполне устраивает. :)

0
19.10.2016, 21:22

Не по теме:

Цитата Сообщение от nmcf Посмотреть сообщение
Не по теме:
Меня Qt вполне устраивает.
Четкий ответ :D

0
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 17
20.10.2016, 15:14  [ТС]
nmcf, жаль,что меня нет,..))
Спасибо и на этом
0
20.10.2016, 16:05

Не по теме:

В чём проблема-то? Установи Qt и пользуйся.

0
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 17
20.10.2016, 16:43  [ТС]
nmcf, я уже установил..
Препод в универе принимает только на вижуалке.
0
20.10.2016, 17:13

Не по теме:

Переделай ту программу с C# на C++/CLI, если знаешь как.

0
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 17
20.10.2016, 17:20  [ТС]
nmcf, если бы я знал как,то не создавал эту тему..)
0
20.10.2016, 17:23

Не по теме:

Ну а почему не изучаешь?

0
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 17
23.10.2016, 00:06  [ТС]
nmcf, потихоньку стараюсь,но не сразу же так все))
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
23.10.2016, 00:21
Qt+Visual Studio вполне удачно идет,вообще-то. Qt VS Add-In плагин называется,или как-то так...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.10.2016, 00:21
Помогаю со студенческими работами здесь

Тонкости быстрой сортировки
Излазил кучу мест в сети. Нашел массу этих алгоритмов, но на поверку практически каждый не совсем работающий. Представляется, что в этой...

Алгоритм Быстрой Сортировки на C++
Можно ли этот алгоритм использовать для последовательности чисел? Просто в книге Сэджвика &quot;Фундаментальные алгоритмы на C++&quot;...

Визуализатор быстрой сортировки
Добрый день! Нужно написать программу, которая иллюстрирует работу быстрой сортировки. В частности должно присутствовать: *вывод...

Реализация быстрой сортировки
Решил реализовать алгоритм быстрой сортировки. Иногда, программа работает корректно. Иногда, падает с ошибкой сегментации. typedef...

Алгорим быстрой сортировки
В одной из тем выложен алгоритм быстрой сортировки. Возник вопрос: если индексы i и j указывают на один элемент зачем нужен обмен? ...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType и SDL3_ttf из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru