-66 / 0 / 0
Регистрация: 02.12.2020
Сообщений: 87
1

Сложные внутренние методы сортировки массивов

15.04.2022, 01:43. Показов 351. Ответов 1

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста, доделать код. Вот задание:
Дана вещественная матрица размером n x m; упорядочить (переставить) строки матрицы по возрастанию значений наименьших элементов строк (сортировка обменом).
Осталось переделать матрицу в вещественную, потом чтобы упорядочивало строки, а не столбцы (просто поменять "m" на "n", к сожалению, не помогло))) и не уверен сортирует ли оно именно обменом.
Просто только учу эти сортировки, дальше не могу исправить код под мое задание.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace АтаОМ_лаб_2
{
    class Program
    {
        static Random rnd = new Random();
        static void Main(string[] args)
        {
            int n; //количество строк
            int m; //количество столбцов
            do
            {
                Console.Write("\n Введите количество строк (n): ");
                int.TryParse(Console.ReadLine(), out n);
                Console.Write("\n Введите количество столбцов (m): ");
                int.TryParse(Console.ReadLine(), out m);
 
            } while (!(n > 0 && m > 0)); 
            int[,] ar = new int[n, m]; //исходная матрица
            int[,] creatArry = new int[n, m]; 
            CreateArray(ar);
            Console.WriteLine("\n Сгенерированная матрица: ");
            ShowArray(ar);
            ChangeArray(ar, creatArry);
            Console.WriteLine("\n Отсортированная матрица: ");
            ShowArray(creatArry);
 
            Console.ReadKey();
        }
        static void CreateArray(int[,] ar)
        {
            for (int i = 0; i < ar.GetLength(0); i++) 
            {
                for (int j = 0; j < ar.GetLength(1); j++)
                {
                    ar[i, j] = rnd.Next(1, 20);
                }
            }
        }
        static void ShowArray(int[,] ar)
        {
            for (int i = 0; i < ar.GetLength(0); i++) 
            {
                for (int j = 0; j < ar.GetLength(1); j++)
                {
                    Console.Write($" {ar[i, j]}  ");
                }
                Console.WriteLine();
            }
        }
        static void ChangeArray(int[,] ar, int[,] creat)
        {
            int x = int.MaxValue;
            int m = 0;
            int findj = 0; 
            while (m < creat.GetLength(1))
            {
                for (int i = 0; i < ar.GetLength(0); i++)
                {
                    for (int j = 0; j < ar.GetLength(1); j++)
                    {
                        if (x > ar[i, j])
                        {
                            x = ar[i, j];
                            findj = j;
                        }
                    }
                }
                x = int.MaxValue;
                for (int k = findj; k < findj + 1; k++) 
                {
                    for (int t = 0; t < creat.GetLength(0); t++)
                    {
                        creat[t, m] = ar[t, findj];
                        ar[t, findj] = int.MaxValue; 
                    }
                }
                m++;
            }
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2022, 01:43
Ответы с готовыми решениями:

внутренние сортировки массивов
помогите пожалуйста написать программу.завтра зачёт а у меня ничего нет((((((

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

Методы сортировки массивов
помогите решить задачу или хотя бы дайте направление. я не совсем понял задачу Сортировка c...

Методы сортировки массивов
Дан одномерный массив целых чисел. выбрать из массива все четные и упорядочить их по возрастанию....

1
-66 / 0 / 0
Регистрация: 02.12.2020
Сообщений: 87
22.04.2022, 13:03  [ТС] 2
Получилось переделать вот так (код ниже). Но не могу понять почему не сортирует. И ещё, там я написал диапазон вывода числа с запятой, но всё ещё везде int, так как при попытке переделать в double, где это нужно, выбивает ошибки, не могу понять почему. Был бы очень благодарен за помощь.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace АтаОМ_лаб_2
{
    class Program
    {
        static Random rnd = new Random();
        static void Main(string[] args)
        {
            int n; //количество строк
            int m; //количество столбцов
            do
            {
                Console.Write("\n Введите количество строк (n): ");
                int.TryParse(Console.ReadLine(), out n);
                Console.Write("\n Введите количество столбцов (m): ");
                int.TryParse(Console.ReadLine(), out m);
 
            } while (!(n > 0 && m > 0));
            int[,] ar = new int[n, m];
            int[] min = new int[n];
            CreateArray(ar);
            Console.WriteLine("\n Сгенерированная матрица: ");
            ShowArray(ar);
            ExchangeString(ar, min);
            Console.WriteLine("\n Отсортированная матрица: ");
            ShowArray(ar);
 
            Console.ReadKey();
        }
        static void CreateArray(int[,] ar)
        {
            int i, j;
            for (i = 0; i < ar.GetLength(0); i++) 
            {
                for (j = 0; j < ar.GetLength(1); j++)
                {
                    ar[i, j] = rnd.Next(1, 20) / 4;
                }
            }
        }
        static void ShowArray(int[,] ar)
        {
            int i, j;
            for (i = 0; i < ar.GetLength(0); i++) 
            {
                for (j = 0; j < ar.GetLength(1); j++)
                {
                     Console.Write(" {j : 0.00}", ar[i, j]);
                }
                Console.WriteLine();
            }
        }
        static void ExchangeString(int[,] ar, int[] min)
        {
            int x = int.MaxValue;
            int h, tmp, j, i;
            for (i = 0; i < ar.GetLength(0); i++)
            {
                for (j = 0; j < ar.GetLength(1); j++)
                {
                if (ar[i, j] < x)
                    x = ar[i, j];
                }
                min[i] = x;
            }
            for (h = 0; h < min.Length - 1; h++)
            {
                for (i = h + 1; i < min.Length; i++)
                {
                    if (min[i - 1] > min[i])
                    {
                        tmp = min[i - 1];
                        min[i - 1] = min[i];
                        min[i] = tmp;
 
                        for (j = 0; j < ar.GetLength(1); j++)
                        {
                            tmp = ar[i - 1, j];
                            ar[i - 1, j] = ar[i, j];
                            ar[i, j] = tmp;
                        }
                    }
                }
            }
        }
    }
}
0
22.04.2022, 13:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2022, 13:03
Помогаю со студенческими работами здесь

Основные методы сортировки массивов
помогите пожалуйста(( я не могу решить вот такую вот задачу(( Выполнить сортировку по убыванию....

Методы сортировки статических и динамических массивов
Наверное, самая тяжёлая работа, с которой пришлось столкнуться... Как это делать? Нужно вариант...

Методы сортировки массивов.Метод пузырьковый
Метод пузырьковый nLeft 600 nRight 1600 Помогите сделать Зарание Благодарю.

Программно реализовать методы сортировки массивов
Программно реализовать методы сортировки массивов. Разработать и программно реализовать средство...

Методы внутренней сортировки массивов (вставки и обмена)
Нужно создать вектор А. Для создания массива использовать генератор случайных чисел. Количество...

Реализовать программу, объединяющую простейшие методы сортировки массивов
Реализовать программу, объединяющую простейшие методы сортировки массивов: • сортировку обменом...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru