Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Nemacho
0 / 0 / 0
Регистрация: 05.12.2017
Сообщений: 2
1

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

05.12.2017, 19:42. Просмотров 124. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2017, 19:42
Ответы с готовыми решениями:

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

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

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

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

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

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

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

Добавлено через 1 минуту
по моему понятию, походу матрица
0
ArtemFM
247 / 228 / 165
Регистрация: 10.09.2015
Сообщений: 850
05.12.2017, 21:25 4
В общем тебе надо объединить 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2017, 21:25

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

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

Вылетает сортировка (Сортирует, но выводится лишь на долю секунды)
Program KK; Uses Crt; Type strmenu=record x: integer; s: string; end;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru