Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 05.12.2017
Сообщений: 2

Построить проверочную тест функцию, которая сортирует матрицу с 100 элементами в течение 1 секунды

05.12.2017, 19:42. Показов 591. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Help peoples. Ниже представлен сортированный массив с целыми числами. Нужно построить проверочную тест функцию, которая сортирует матрицу с 100 элементами в течение 1 секунды.
Можете помочь?
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
public static void sort(int[] a){
    .......................................
}
 
 
 
//[B]CLASS MAIN[/B]
public class Main {
    public static void main(String []args){
        Matrix matrix = new Matrix (100);
    }
}
 
//[B]CLASS MATRIX[/B]
import java.util.Scanner;
 
public class Matrix {
    private static int n;
    private static int i;
    private int[] a;
 
    public Matrix(int n) {
        this.n=n;
        int[] a = new int[n];
    }
 
    public static void sort(int[] a){
        a = new int[n];
 
        System.out.println ("Enter the matrix: ");
        Scanner in = new Scanner (System.in);
        for(i=0;i<n;i++){
            a[i]=in.nextInt ();
        }
        System.out.println (a[i]);
    }
}
 
 
//[B]CLASS MATRIX TEST[/B]
import org.junit.BeforeClass;
 
import static org.junit.Assert.*;
 
public class MatrixTest {
    static Matrix[] matrix;
 
    @BeforeClass
 
 
    @Test
    public void sort() throws Exception {
        Matrix m = new Matrix (100);
        assertEquals();
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.12.2017, 19:42
Ответы с готовыми решениями:

Составить функцию, которая прямоугольную матрицу чисел сортирует по указанному столбцу
Нужно cоставить функцию, которая прямоугольную матрицу чисел сортирует по указанному столбцу!

Напишите программу, которая сортирует массив по убыванию суммы цифр числа. Используйте функцию, которая определяет сумму
Напишите программу, которая сортирует массив по убыванию суммы цифр числа. Используйте функцию, которая определяет сумму цифр числа. ...

Отсортировать массив от 0 до 100 пузырьковым методом, провести тестирование
Можете помощь написать программу если не тяжело Написать программу которая сортирует массив от 0 до 100 пузырьковым методом, провести...

3
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
05.12.2017, 19:57
матрицу или одномерный массив?
как я помню, матрица - это двумерный масив
1
0 / 0 / 0
Регистрация: 05.12.2017
Сообщений: 2
05.12.2017, 20:13  [ТС]
по моему понятию, походу матрица

Добавлено через 5 минут
я нашел одну задачу, которое сортирует массив случайного числа

Добавлено через 1 минуту
по моему понятию, походу матрица
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
05.12.2017, 21:25
В общем тебе надо объединить 2 сортировки...
quick и marge

в общем разбиваешь одномерный массив на квадратную матрицу, примерно квадратную
каждую строку матрицы сортируешь quick
а затем marge (объединяет 2 сортированных массива в 1 сортированный) объединяешь матрицу в 1 одномерный массив

Могу сделать, если хочешь?

Добавлено через 1 час 1 минуту
Вот тебе код. Конечно много и думаю, можно гораздо проще реализовать, но для препода норм.
Кстати, в 100 элементов сортирует быстро очень
пробовал на 1000 элементов = 1 мс
на 10к = 10 мс

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
import java.util.Arrays;
import java.util.Random;
 
public class Matrix {
    private long ms;
 
    public long getTime() {
        return ms;
    }
 
    public int[] sort(int[] array) {
        start();
        if (array != null && array.length > 1) {
            int[][] matrix = convertArrayToDeepArray(array);
            for (int i = 0; i < matrix.length; i++) {
                quickSort(matrix[i]);
            }
            if (matrix.length > 1) {
                int[] result = margeSort(matrix[0], matrix[1]);
                for (int i = 2; i < matrix.length; i++) {
                    result = margeSort(result, matrix[i]);
                }
                array = result;
            } else {
                array = matrix[0];
            }
        }
        stop();
        return array;
    }
 
    private int[][] convertArrayToDeepArray(int[] array) {
        int m = (int) Math.sqrt(array.length);
        int n = array.length / m;
        if (array.length % m != 0) {
            n++;
        }
        int lastLine = m * n - array.length;
        int[][] deep = new int[n][m];
        int count = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (count < array.length) {
                    deep[i][j] = array[count++];
                }
            }
            if (i == n - 1 && lastLine != 0) {
                deep[i] = Arrays.copyOf(deep[i], deep[i].length - lastLine);
            }
        }
        return deep;
    }
 
    private void start() {
        this.ms = System.currentTimeMillis();
    }
 
    private void stop() {
        this.ms = System.currentTimeMillis() - this.ms;
    }
 
    private int[] margeSort(int[] arrayFirst, int[] arraySecond) {
        int[] array = new int[arrayFirst.length + arraySecond.length];
        int i = 0;
        int j = 0;
        int index = 0;
        while (i < arrayFirst.length && j < arraySecond.length) {
            if (arrayFirst[i] < arraySecond[j]) {
                array[index++] = arrayFirst[i++];
            } else {
                array[index++] = arraySecond[j++];
            }
        }
 
        while (j < arraySecond.length) {
            array[index++] = arraySecond[j++];
        }
        while (i < arrayFirst.length) {
            array[index++] = arrayFirst[i++];
        }
        return array;
    }
 
    private void quickSort(int[] array) {
        if (array != null && array.length > 1) {
            int startIndex = 0;
            int endIndex = array.length - 1;
            doSort(startIndex, endIndex, array);
        }
    }
 
    private static void doSort(int start, int end, int[] array) {
        int startMain = start;
        int endMain = end;
        if (start < end) {
            int cur = start - (start - end) / 2;
            while (start < end) {
                while (start < cur && array[start] <= array[cur]) {
                    start++;
                }
                while (end > cur && array[cur] <= array[end]) {
                    end--;
                }
                if (start < end) {
                    int temp = array[start];
                    array[start] = array[end];
                    array[end] = temp;
                    if (start == cur) {
                        cur = end;
                    } else if (end == cur) {
                        cur = start;
                    }
                }
            }
            doSort(startMain, cur, array);
            doSort(cur + 1, endMain, array);
        }
    }
}
 
class MainMatrix {
    public static void main(String[] args) {
        int[] array = createArray(1000, -99, 99);
        Matrix m = new Matrix();
        System.out.println("Был: " + Arrays.toString(array));
        array = m.sort(array);
        System.out.println("Стал: " + Arrays.toString(array));
        System.out.printf("Затрачено времени: %d sec. %d ms.;", m.getTime() / 1000, m.getTime() % 1000);
 
    }
 
    public static int[] createArray(int n, int min, int max) {
        int[] array = new int[n];
        Random rand = new Random();
        for (int i = 0; i < n; i++) {
            array[i] = rand.nextInt(Math.abs(max - min) + 1) + min;
        }
        return array;
    }
}
Добавлено через 7 минут
как всё работает:
1. мы получаем массив
2. превращаем его в матрицу
3. каждую строку этой матрицы мы сортируем quick сортировкой (в Вики можешь почитать)\
4. т.к. merge работает так. Принимает 2 СОРТИРОВАННЫХ массива и превращает в 1 сортированный
мы берём передаём в marge 1 и 2 строку матрицы и получаем массив
затем в marge отправляем полученный массив и 3-ю строку и так до конца
5. в итоге мы получили одномерный массив
6. getTime - возвращает время, затраченное от начала джо конца сортировки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2017, 21:25
Помогаю со студенческими работами здесь

Написать функцию, которая сортирует вещественный массив методом Хоара
Написать функцию ,которая сортирует вещественный массив методом Хоара по убыванию суммы разности тангенса и котангенса элементов на...

Необходимо задать массив типа 100×100, считать с клавиатуры натуральное число n≤100, построить соответствующую матрицу типа n×n и вывести ее на экран
37. Решить задачу в Turbo Pascal.Необходимо задать массив типа 100×100, считать с клавиатуры натуральное число n≤100, построить...

Разработать функцию, которая сортирует только положительные элементы массива на своих местах
вообщим нужна помощ фунция есть, но как сделать чтобы элементы остались на своих местах? пробывал через if(mas&gt;0) расположение...

Написать функцию, которая сортирует массив по возрастанию или по убыванию, в зависимости от третьего параметра функции.
Доброго времени суток! У меня возникла некоторая проблема в написании кода для задания: Дан массив чисел размерностью 10 элементов....

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru