Top.Mail.Ru
Ответы

Сортировка двумерного массива Java

Всем привет! Подскажите пожалуйста, как отсортировать двумерный массив. При этом, запрещено использовать готовые методы java.util.*

Задание примерно такое:
sortRaggedArray — возвращает отсортированный, неровный, двумерный массив int[][] по следующим правилам:
входящие одномерные массивы должны быть расположены в порядке возрастания их длины;
числа во всех одномерных массивах должны быть в порядке возрастания.
Пример:
arr = [[3, 1, 2,], [3,2]] -> [[2, 3], [1, 2, 3]]
arr = [[5, 4], [7]] -> [[7], [4, 5]]

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Оракул

Да легко. Также как и построчно, только строки целиком меняете местами и все.
Вместо bubble sort можете на любую заменить

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
 import java.util.Arrays; 
 
public class Test { 
 
    public static void main(String[] args) { 
        int[][] array = new int[][]{ 
                {6, 5, 4, 3, 2, 1}, 
                {5, 4, 3, 2, 1}, 
                {4, 3, 2, 1}, 
                {3, 2, 1}, 
                {2, 1}, 
                {1}, 
        }; 
        sortRaggedArray(array); 
        for (var row : array) { 
            System.out.println(Arrays.toString(row)); 
        } 
    } 
 
    public static void sortRaggedArray(int[][] array) { 
        bubbleSort(array); 
        for (int[] row : array) { 
            bubbleSort(row); 
        } 
    } 
 
    public static void bubbleSort(int[][] array) { 
        int i, j; 
        int[] temp; 
        boolean swapped; 
        for (i = 0; i < array.length - 1; i++) { 
            swapped = false; 
            for (j = 0; j < array.length - i - 1; j++) { 
                if (array[j].length > array[j + 1].length) { 
                    temp = array[j]; 
                    array[j] = array[j + 1]; 
                    array[j + 1] = temp; 
                    swapped = true; 
                } 
            } 
            if (!swapped) { 
                break; 
            } 
        } 
    } 
 
    public static void bubbleSort(int[] array) { 
        int i, j, temp; 
        boolean swapped; 
        for (i = 0; i < array.length - 1; i++) { 
            swapped = false; 
            for (j = 0; j < array.length - i - 1; j++) { 
                if (array[j] > array[j + 1]) { 
                    temp = array[j]; 
                    array[j] = array[j + 1]; 
                    array[j + 1] = temp; 
                    swapped = true; 
                } 
            } 
            if (!swapped) { 
                break; 
            } 
        } 
    } 
}