Сортировка пузырьком двумерного массива си шарп

Сортировка массива C#. Алгоритм «Сортировка пузырьком»

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Алгоритм сортировки пузырьком относится к простейшим алгоритмам сортировки и часто применяется в учёбных целях, однако, в практическом плане применяется крайне редко (лишь на небольших массивах). Сложность алгоритма: O(n 2 ). Смысл алгоритма состоит в том, что самые «легкие» (например, меньшие по значению) элементы массива как бы «всплывают» (перемещаются к началу массива) , а самые «тяжелые» — «тонут» (перемещаются в конец массива). Отсюда и название «Сортировка пузырьком»

Алгоритм

  1. Каждый элемент массива сравнивается с последующим и если элемент[i] > элемент[i+1] происходит замена.
  2. Шаг 1 повторяется n-1 раз, где n — количество элементов в массиве.

Реализация алгоритма «Сортировка пузырьком» в C#

Для реализации алгоритма «Сортировка пузырьком» (или, как иногда говорят — пузырьковая сортировка) написан метод, в качестве аргумента которому передается неотсортированный массив:

static void BubbleSort(int[] inArray) < for (int i = 0; i < inArray.Length; i++) for (int j = 0; j < inArray.Length - i - 1; j++) < if (inArray[j] >inArray[j + 1]) < int temp = inArray[j]; inArray[j] = inArray[j + 1]; inArray[j + 1] = temp; >> >

Пример сортировки массива

static void Main(string[] args) < Console.WriteLine("Введите через запятую целые числа и нажмите Enter"); string[] nums = Console.ReadLine().Split(new char[] < ',' >); int[] intArray = new int[nums.Length]; for (int i = 0; i < nums.Length; i++) < intArray[i] = int.Parse(nums[i]); >BubbleSort(intArray); Console.WriteLine("\r\nОтсортированный массив:"); foreach (int value in intArray) < Console.Write($""); > >

-45 -10 -2 0 0 1 2 4 5 6 6 6 7 8 9 10 11 99 100 200

Читайте также:  All mouse events java

Также рекомендуем вам ознакомиться с решением лабораторной работы на тему «Сортировка двумерного массива методом пузырька«

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Источник

Двумерный массив. Сортировка пузырьком

Здравствуйте!
Нужно массив двумерный отсортировать пузырьком. Не важно в порядке возрастания или убывания.
Я уже почти все сделал но только с последним столбцом. Что мне поменять что бы весь массив сортировался, а не только последний столбец?
Помогите изменить!
Вот код: (Ниже форма) (подписал где какие куски кода что делают)

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
private void button2_Click(object sender, EventArgs e) { int m, n; richTextBox1.Text = null; textBox3.Text = null; try { m = Convert.ToInt32(textBox1.Text); n = Convert.ToInt32(textBox2.Text); int i,j; int[,] A = new int[n, m]; //заполнение данных for (i = 0; i  n; i++) for (j = 0; j  m; j++) { A[i, j] = Convert.ToInt32(dataGridView1[j, i].Value); } //проверка int stolb = m-1;//последний столбец int z1;//замена for (i=0; in; i++) { for (j=0; jn; j++) { if (A[i, stolb] > A[j, stolb]) { z1 = A[i, stolb]; A[i, stolb] = A[j, stolb]; A[j, stolb] = z1; } } } //вывод for (i = 0; i  n; i++) richTextBox1.Text += Convert.ToString(A[i, stolb]) + "\n"; } catch (FormatException) { textBox3.Text = "Неверный формат"; } } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { int i, j; try { i= Convert.ToInt32(textBox2.Text); j = Convert.ToInt32(textBox1.Text); dataGridView1.RowCount =i; dataGridView1.ColumnCount =j; } catch (FormatException) { textBox3.Text = "Неверный формат"; } } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { } private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e) { } } }

Сортировка пузырьком в DataGridView
помогите нужно отсортировать матрицу 4×4 в datagridview методом пузырька в интернете ничего.

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

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

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

Я бы всё перебросил в одномерный массив размером B[n×m], его бы отсортировал и снова преобразовал в двумерный.
Формула перехода

Источник

Лабораторная работа по C#. Сортировка двумерного массива методом пузырька

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Задача: создать двумерный массив размерностью m на n элементов, заполнив его случайными числами в диапазоне от 0 до 9 . Отсортировать элементы массива по возрастанию вначале по строкам, а затем по столбцам. Вывести на экран исходный массив, массив отсортированный по-строчно, массив отсортированный по столбцам. Для сортировки применить метод пузырька.

Что необходимо знать

Для выполнения работы нам необходимо знать:

  1. Основные сведения по работе с многомерными и одномерными массивами
  2. Как реализуется алгоритм сортировки массива «Сортировка пузырьком«
  3. Как в C# генерировать случайные числа

Ход выполнения работы

Необходимые методы

Исходя из условий задачи, нам потребуется написать следующие методы:

  1. Метод генерации двумерного массива заданной размерности
  2. Метод вывода массива в консоль
  3. Метод сортировки массива алгоритмом пузырька

Метод генерации двумерного массива заданной размерности

public static int[,] GenerateArray(int t, int i) < int[,] table = new int[t, i]; Random random = new Random(); for (int a = 0; a < t; a++) < for (int b = 0; b < i; b++) < table[a, b] = random.Next(0, 9); >> return table; >

На входе метод получает размерности массива. Далее, создается сам массив:

Объект класса Random для генерации случайных чисел:

Random random = new Random();

Random представляет генератор псевдослучайных чисел, то есть использует такой алгоритм, который генерирует последовательность чисел, отвечающую определенным статистическим критериям случайности.

После этого, в цикле происходит заполнение массива цифрами от 0 до 9 :

Метод вывода двумерного массива в консоль

public static void PrintArray(int[,] array) < for (int a = 0; a < array.GetLength(0); a++) < for (int b = 0; b < array.GetLength(1); b++) < Console.Write(array[a, b] + " "); >Console.WriteLine(); > >

Здесь все достаточно просто. Так как мы точно знаем, что массив двумерный, то используем два цикла for , в которых проходимся по соответствующим измерениям массива и выводим значения элементов на экран. В консоли это будет выглядеть, например, следующим образом:

Метод сортировки массива по возрастанию

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

Реализация сортировки двумерного массива

Суть реализации сортировки двумерного массива, в зависимости от того, как сортируется массив, можно представить следующим образом:

  1. Создаем временный одномерный массив с количеством элементов равным количеству элементов в каждой строке (или каждом столбце) исходного массива.
  2. Сортируем временный массив
  3. Переносим отсортированные значения из временного массива в исходный массив.

Ниже представлена реализация этого алгоритма:

static void Main(string[] args) < int colCount = 6;//m int rowCount = 5;//n int[,] arr = GenerateArray(rowCount, colCount); Console.WriteLine("Исходный массив"); PrintArray(arr); Console.WriteLine("Сортировка по строкам: "); int[] row = new int[colCount]; for (int i = 0; i < rowCount; i++) < for (int j = 0; j < colCount; j++) row[j] = arr[i, j]; BubbleSort(row); Insert(true, i, row, arr); >PrintArray(arr); Console.WriteLine("Сортировка по столбцам: "); int[] col = new int[rowCount]; for (int i = 0; i < colCount; i++) < for (int j = 0; j < rowCount; j++) col[j] = arr[j, i]; BubbleSort(col); Insert(false, i, col, arr); >PrintArray(arr); > public static void Insert(bool isRow, int dim, int[] source, int[,] dest) < for (int k = 0; k < source.Length; k++) < if (isRow) dest[dim, k] = source[k]; else dest[k, dim] = source[k]; >>

здесь метод Insert — это вспомогательный метод с помощью которого мы меняем значения в стоке или столбце исходного массива на отсортированные значения.

Полный исходный код программы

Ниже представлен полный исходный код программы для сортировки двумерного массива методом пузырька:

using System; namespace BabbleSort < internal class Program < static void Main(string[] args) < int colCount = 6;//m int rowCount = 5;//n int[,] arr = GenerateArray(rowCount, colCount); Console.WriteLine("Исходный массив"); PrintArray(arr); Console.WriteLine("Сортировка по строкам: "); int[] row = new int[colCount]; for (int i = 0; i < rowCount; i++) < for (int j = 0; j < colCount; j++) row[j] = arr[i, j]; BubbleSort(row); Insert(true, i, row, arr); >PrintArray(arr); Console.WriteLine("Сортировка по столбцам: "); int[] col = new int[rowCount]; for (int i = 0; i < colCount; i++) < for (int j = 0; j < rowCount; j++) col[j] = arr[j, i]; BubbleSort(col); Insert(false, i, col, arr); >PrintArray(arr); > public static void Insert(bool isRow, int dim, int[] source, int[,] dest) < for (int k = 0; k < source.Length; k++) < if (isRow) dest[dim, k] = source[k]; else dest[k, dim] = source[k]; >> public static int[,] GenerateArray(int t, int i) < int[,] table = new int[t, i]; Random random = new Random(); for (int a = 0; a < t; a++) < for (int b = 0; b < i; b++) < table[a, b] = random.Next(0, 9); >> return table; > public static void PrintArray(int[,] array) < for (int a = 0; a < array.GetLength(0); a++) < for (int b = 0; b < array.GetLength(1); b++) < Console.Write(array[a, b] + " "); >Console.WriteLine(); > > static void BubbleSort(int[] inArray) < for (int i = 0; i < inArray.Length; i++) for (int j = 0; j < inArray.Length - i - 1; j++) < if (inArray[j] >inArray[j + 1]) < int temp = inArray[j]; inArray[j] = inArray[j + 1]; inArray[j + 1] = temp; >> > > >

Пример работы приложения представлен ниже:

Исходный массив
6 2 7 7 3 3
4 2 5 0 4 3
8 8 5 5 6 5
4 0 6 2 1 1
7 1 7 7 2 4
Сортировка по строкам:
2 3 3 6 7 7
0 2 3 4 4 5
5 5 5 6 8 8
0 1 1 2 4 6
1 2 4 7 7 7
Сортировка по столбцам:
0 1 1 2 4 5
0 2 3 4 4 6
1 2 3 6 7 7
2 3 4 6 7 7
5 5 5 7 8 8

Итого

Для выполнения работы нам потребовались знания о том, как работать с одномерными и многомерными массивами в C#, как генерировать псевдослучайные числа в C#, а также основные сведения по методам сортировки одномерных массивов.

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Источник

Сортировка двумерного массива методом пузырька

где 1-я строка- это время измерения, 2-я строка- значение, которое зафиксировал датчик.
Как отсортировать этот двумерный массив по убыванию времени методом пузырька, при одинаковом времени измерения, оставлять минимальное значение, и вывести результат на textbox2?

Сортировка двумерного массива методом пузырька
Дан двумерный массив в textBox1, нужно отсортировать его в обратном порядке, методом пузырька, и.

Сортировка массива методом пузырька
сортировка массива методом пузырька с#

Сортировка массива методом пузырька (усовершенствованным)
Реализовать алгоритм сортировки массива методом пузырька (усовершенствованным) в массиве из 100.

Генерация массива с помощью ДСЧ и его сортировка методом пузырька
описать функцию формирования элементов одномерного массива с помощью генератора случайных чисел и.

Эксперт .NET

Svet tev, проще представить данные в виде двух одномерных массивов и сортирировать второй синхронно с первым. Если к тому же не привязываться к сортировке пузырьком, то можно использовать стндртный метод Array.Sort(TKey[], TValue[]).

Добавлено через 2 минуты
Если нужен именно двухмерный маассив, то задача элемтарно решается т.к. сортировать нужно только первую строку, а элементы во второй переставляются синхронно с первой.

Эксперт .NET

Svet tev, ок. Делай. Для начала для одномерного массива. Затем это несложно будет переделать для одной строки двумерного массива.

Помогите написать такую же сортировку, но методом пузырька.

Этот метод (выбора) сортирует двумерный массив из двух строк(первая- это время показания датчика, вторая- само показание датчика) по убыванию времени.

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
void Sort() { for (int i = 0; i mas3.Length/2-1; i++) { int max = mas3[0, i]; int k = i; for (int j =i+1; j  mas3.Length / 2 ; j++) { if (mas3[0, j] > max) { max = mas3[0, j]; k = j; int buf0 = mas3[0, k]; int buf1 = mas3[1, k]; mas3[0, k] = mas3[0, i]; mas3[1, k] = mas3[1, i]; mas3[0, i] = buf0; mas3[1, i] = buf1; } } } }

Эксперт .NET

Svet tev, еще раз повторю свой совет — напиши сначала сортировку пузырьком для одномерного массива. Ты в состоянии это сделать?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
{ int temp; for (int i = 0; i  mas.Length; i++) { for (int j = i + 1; j  mas.Length; j++) { if (mas[i]  mas[j]) { temp = mas[i]; mas[i] = mas[j]; mas[j] = temp; } } } return mas; }

Эксперт .NET

Svet tev, хорошо. Теперь следующий (предпоследний) шаг. Тебе на самом деле нужно отсортировать не двухмерный массив, а одну его строку. Строка двухмерного массива это одномерный массив. Значит в код нужно внести немного изменений
1) два условия < mas.Length заменяем на < mas.GetLength(1) т.к. GetLength(1) вернет количество колонок в двухмерном массиве = количество элементов в одной строке

2) т.к. выполняется сортировка первой строки, то заменяем [i] на [0,i] . Тоже самое для о разумеется.

3) И заодно переносим объявление temp внутрь if

Внеси эти изменения, убедись что первая строка в самом деле сортируется и выложи код сюда.

Сортировка строк двумерного массива по возрастанию первого элемента методом выбора
Добрый день! Подскажите пожалуйста с сортировкой строк двумерного массива по возрастанию первого.

Сортировка методом пузырька
Всем привет. Мне надо отсортировать массив. Не получается. В чем моя ошибка? Почему не сортирует.

Метод для сортировки массива, методом пузырька — индекс находился вне границ массива
Доброго времени суток. Я изучаю С# недавно. Прочел похожие темы на форму, но так и не понял, как.

Записать алгоритм сортировки по возрастанию одномерного массива методом «пузырька»
нужна помощь: Записать алгоритм сортировки по возрастанию одномерного массива методом .

Сортировка методом «пузырька»
Известен список спортсменов и их результат прыжков в длину. Напечатать общий список в порядке.

Сортировка данных из текстового файла методом пузырька
Помогите. Нужно создать windows forms application с 3 кнопками на ней. (загрузить, отсортировать.

Источник

Оцените статью