Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 12.05.2017
Сообщений: 91

Сортировка пузырьком в DataGridView

04.11.2018, 17:57. Показов 5509. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите нужно отсортировать матрицу 4x4 в datagridview методом пузырька в интернете ничего похожего не нашол
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.11.2018, 17:57
Ответы с готовыми решениями:

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

Сортировка пузырьком через datagridview
Отсортировать матрицу методом пузырька, сортировка работает только на разных строчках отдельно, а нужно чтобы сортировались все числа...

Сортировка пузырьком не работает при ручном вводе в DataGridView
Ребят помогите,задача такая пользователь вводит числа в datagridview размером 3 на 3 и по нажатию кнопки программа сортирует пузырьком. Код...

13
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
04.11.2018, 19:43
qiwi13, а про метод пузырька что-нибудь вообще нашёл?
0
1 / 1 / 0
Регистрация: 12.05.2017
Сообщений: 91
04.11.2018, 20:12  [ТС]
нашол один код он сортирует каждую строку по отдельности вот



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    for (int k = 0; k < 3; k++)
                    {
 
                        if (Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value) < Convert.ToInt32(dataGridView1.Rows[i].Cells[k].Value))
 
                        {
                           int z = Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value);
                            dataGridView1.Rows[i].Cells[j].Value = Convert.ToInt32(dataGridView1.Rows[i].Cells[k].Value);
                            dataGridView1.Rows[i].Cells[k].Value = z;
 
 
                        }
                    }
 
                }
            }
Добавлено через 56 секунд
а нужно что бы все сразу
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
04.11.2018, 22:46
qiwi13, хорошо.
Классическая сортировка методом пузырька для одномерного массива понятна и известна:
Просматриваем массив, начиная со второго элемента и до конца, сравнивая
предыдущий элемент с текущим и если предыдущий элемент больше, то меняем их местами.
И так до тех пор, пока перестановки не прекратятся.
А вот когда два измерения в массиве, когда матрица, вот тут я не пойму, как надо сортировать?
Может разворачивать матрицу в одномерный массив, т. е. сначала все элементы первой строки,
затем все элементы второй строки и т. д., то есть змейкой и так сортировать? Или как?
0
1 / 1 / 0
Регистрация: 12.05.2017
Сообщений: 91
05.11.2018, 13:36  [ТС]
нет нужно что бы все сортировались вмести допустим число один стоит в первой строке а число 2 в третий строке что то сипо того
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
05.11.2018, 14:06
qiwi13, чего-то я совсем сегодня непонятливый...
Короче, нужен примерчик таблички (3x3) исходной и таблички, которая должна получиться...
0
1 / 1 / 0
Регистрация: 12.05.2017
Сообщений: 91
05.11.2018, 14:17  [ТС]
допустим
9 2 8
1 4 5
7 3 6
а должно получится вот так
1 2 3
4 5 6
7 8 9
что сортировалась не одна строка а полностью все
помогите пожалуйста
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
05.11.2018, 14:58
qiwi13, получите:
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
var rand = new Random();
dataGridView1.RowCount = 3;       // введите здесь свои данные
dataGridView1.ColumnCount = 3;  // введите здесь свои данные
// заполнение тестовыми данными
var rows = dataGridView1.RowCount;
var columns = dataGridView1.ColumnCount;
for (int column = 0; column < columns; column++)
    for (int row = 0; row < rows; row++)
        dataGridView1[column, row].Value = rand.Next(1, 10);
// инициализация рабочего массива (вектора)
var vector = new int[rows * columns];
var k = 0;
// заполнение рабочего вектора
for (int column = 0; column < columns; column++)
    for (int row = 0; row < rows; row++)
        vector[k++] = (int)dataGridView1[column, row].Value;
// сортировка вектора "пузырьком"
while (true)
{
    var found = false;
    for (var i = 1; i < vector.Length; i++)
    {
        if (vector[i - 1] > vector[i])
        {
            var temp = vector[i];
            vector[i] = vector[i - 1];
            vector[i - 1] = temp;
            found = true;
        }
    }
    if (!found) break;
}
// заполнение таблицы из вектора
for (var i = 0; i < vector.Length; i++)
{
    var row = i / rows;
    var column = i % columns;
    dataGridView1[column, row].Value = vector[i];
}
1
1 / 1 / 0
Регистрация: 12.05.2017
Сообщений: 91
05.11.2018, 15:46  [ТС]
а вы не могли бы скинуть свой документ с этим кодом

Добавлено через 1 минуту
потому что я вставляю в кнопку и ничего не происходит

Добавлено через 36 минут
подскажите пожалуйста как убрать от сюда random заполнение
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
05.11.2018, 15:47
Лучший ответ Сообщение было отмечено qiwi13 как решение

Решение

Это код формы
Кликните здесь для просмотра всего текста

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
using System;
using System.Windows.Forms;
 
namespace WindowsFormsAppQuestion2345477
{
    public partial class Form1 : Form 
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            var rand = new Random();
            dataGridView1.RowCount = 3;
            dataGridView1.ColumnCount = 3;
            // заполнение тестовыми данными
            var rows = dataGridView1.RowCount;
            var columns = dataGridView1.ColumnCount;
            for (int column = 0; column < columns; column++)
                for (int row = 0; row < rows; row++)
                    dataGridView1[column, row].Value = rand.Next(1, 10);
            // инициализация рабочего массива (вектора)
            var vector = new int[rows * columns];
            var k = 0;
            // заполнение рабочего вектора
            for (int column = 0; column < columns; column++)
                for (int row = 0; row < rows; row++)
                    vector[k++] = (int)dataGridView1[column, row].Value;
            // сортировка вектора "пузырьком"
            while (true)
            {
                var found = false;
                for (var i = 1; i < vector.Length; i++)
                {
                    if (vector[i - 1] > vector[i])
                    {
                        var temp = vector[i];
                        vector[i] = vector[i - 1];
                        vector[i - 1] = temp;
                        found = true;
                    }
                }
                if (!found) break;
            }
            // заполнение таблицы из вектора
            for (var i = 0; i < vector.Length; i++)
            {
                var row = i / rows;
                var column = i % columns;
                dataGridView1[column, row].Value = vector[i];
            }
        }
    }
}

Это код дизайнера
Кликните здесь для просмотра всего текста

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
namespace WindowsFormsAppQuestion2345477
{
    partial class Form1
    {
        /// <summary>
        /// Обязательная переменная конструктора.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
 
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        /// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
 
        #region Код, автоматически созданный конструктором форм Windows
 
        /// <summary>
        /// Требуемый метод для поддержки конструктора — не изменяйте 
        /// содержимое этого метода с помощью редактора кода.
        /// </summary>
        private void InitializeComponent()
        {
            this.dataGridView1 = new System.Windows.Forms.DataGridView();
            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
            this.SuspendLayout();
            // 
            // dataGridView1
            // 
            this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
            | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            this.dataGridView1.Location = new System.Drawing.Point(12, 12);
            this.dataGridView1.Name = "dataGridView1";
            this.dataGridView1.Size = new System.Drawing.Size(410, 300);
            this.dataGridView1.TabIndex = 0;
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(434, 324);
            this.Controls.Add(this.dataGridView1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
            this.ResumeLayout(false);
 
        }
 
        #endregion
 
        private System.Windows.Forms.DataGridView dataGridView1;
    }
}
0
1 / 1 / 0
Регистрация: 12.05.2017
Сообщений: 91
05.11.2018, 15:56  [ТС]
спасибо вам большое
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
05.11.2018, 17:11
Цитата Сообщение от qiwi13 Посмотреть сообщение
как убрать от сюда random заполнение
В строке 9 происходит это заполнение: dataGridView1[column, row].Value = rand.Next(1, 10);
Чтобы убрать random заполнение, закомментриуйте строки 7,8 и 9
0
1 / 1 / 0
Регистрация: 12.05.2017
Сообщений: 91
06.11.2018, 10:17  [ТС]
C#
1
vector[k++] = (int)dataGridView1[column, row].Value;
вот в этой строке выводит ошибку System.InvalidCastException: "Заданное приведение является недопустимым."
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
06.11.2018, 12:33
Цитата Сообщение от qiwi13 Посмотреть сообщение
Заданное приведение является недопустимым.
Приведение к int работало бы, если значение в Value присваивалось методом rand.Next(1, 10),
который возвращает значение типа int.
Какое сейчас Вы присваиваете значение в Value, мне не ведомо...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.11.2018, 12:33
Помогаю со студенческими работами здесь

Сортировка пузырьком с флажком
Не работакт сортировка з флажком помогите using System; using System.Collections.Generic; using System.ComponentModel; using...

Двумерный массив. Сортировка пузырьком
Здравствуйте! Нужно массив двумерный отсортировать пузырьком. Не важно в порядке возрастания или убывания. Я уже почти все сделал но...

Сортировка массива пузырьком, введенного с текстового файла
Здравствуйте, прошу помощи. Весь день бью курсовую - застрял на таком этапе. Сделал ввод массива с текстового данного, есть код для...

Сумма некратных 3 элементов по строкам матрицы и сортировка пузырьком
В программировании вообще не разбираюсь(((, но срочно нужно создать приложение, которое по введенной количества строк и столбцов формирует...

Сортировка в Datagridview
Прошу помощи, нужно отсортировать второй столбец, вот код и что получилось, но там небольшой косяк есть, не пойму как исправить, сортирует...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью 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 позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru