Представление в памяти двумерного массива — КиберПедия 

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Представление в памяти двумерного массива

2022-10-27 27
Представление в памяти двумерного массива 0.00 из 5.00 0 оценок
Заказать работу

Задача. Дан двумерный массив целых чисел, состоящий из n*m элементов. Все строки массива, которые упорядочены по возрастанию, заменить нулями.

import java.util.*;

class Ex_6_8{

//метод инициализации массива

static void fill(int [][] a){

for(int i=0;i<a.length;i++)

for(int j=0;j<a[i].length;j++)

if (i%3==0) a[i][j]=j;

else a[i][j]=(int)(Math.random()*10)-5;

}

//метод вывода массива на печать

static void print(int[][] a){

for(int i=0;i<a.length;i++)

System.out.println(Arrays.toString(a[i]));

}

//логический метод определяет отсортирован ли массив

static boolean is_sort(int[] t){

int[] t1=new int[t.length];

System.arraycopy(t,0,t1,0,t.length);

Arrays.sort(t1);

return (Arrays.equals(t,t1));

}

public static void main(String[] args) {

int n=5, m=5;

int[][] arr=new int[n][m];

fill(arr);

System.out.println("Исходная матрица");

print(arr);

for(int i=0;i<arr.length;i++){

if (is_sort(arr[i])) Arrays.fill(arr[i],0);

}

System.out.println("Новая матрица");

print(arr); }}

Результат:

Исходная матрица

[0, 1, 2, 3, 4]

[-5, -1, -4, 0, 0]

[4, -1, -3, -5, 0]

[0, 1, 2, 3, 4]

[-3, -5, 4, 2, 3]

Новая матрица

[0, 0, 0, 0, 0]

[-5, -1, -4, 0, 0]

[4, -1, -3, -5, 0]

[0, 0, 0, 0, 0]

[-3, -5, 4, 2, 3]

Пример. Сложить два массива и копирование массива

Есть два массива, и вам нужно их соединить и получить общий массив.

private double[] concatArray(double[] a, double[] b) {   if (a == null)          return b;   if (b == null)          return a;   double[] r = new double[a.length + b.length];   System.arraycopy(a, 0, r, 0, a.length);//   System.arraycopy(b, 0, r, a.length, b.length);   return r;}Где System.arraycopy(a, 0, r, 0, a.length); метод- копирует a.length элементов массива а начиная с нулевого, и размещает их в массиве r, начиная с нулевого.System.arraycopy(b, 0, r, a.length, b.length); копирует b.length элементов массива b, начиная с нулевого, и размещает их в массиве r, начиная с a.length.

Пример сложения двух строковых массивов:

// метод для склеивания двух строковых массивовprivate String[] concatArray(String[] a, String[] b) {   if (a == null)          return b;   if (b == null)          return a;   String[] r = new String[a.length + b.length];   System.arraycopy(a, 0, r, 0, a.length);   System.arraycopy(b, 0, r, a.length, b.length);   return r;} String[] week1 = new String[] { "Понедельник", "Вторник", "Среда" }; String[] week2 = new String[] { "Четверг", "Котопятница", "Субкота",                  "Воскресенье" };                  String[] week = concatArray(week1, week2); // будет возвращён массив всех семи дней недели

Копировать часть массива

Аналогично, если вам нужно взять только часть из большого массива, то воспользуйтесь методом:

System.arraycopy(a, start, r, 0, a.length - start);Где start - с какой позиции нужно получить новый массив, отсчёт с 0private double[] copyPartArray(double[] a, int start) {   if (a == null)          return null;   if (start > a.length)      return null;   double[] r = new double[a.length - start];   System.arraycopy(a, start, r, 0, a.length - start);   return r;} public void onClick(View v) {   double[] digits = new double[] {6.5, 3.1, 5.72};   double[] part = copyPartArray(digits, 1);   Toast.makeText(v.getContext(), part[1] + "", Toast.LENGTH_LONG).show();}

Здесь вы также можете использовать другие типы вместо double. Вот пример использования:

private String[] copyPartArray(String[] a, int start) {   if (a == null)          return null;   if (start > a.length)          return null;   String[] r = new String[a.length - start];   System.arraycopy(a, start, r, 0, a.length - start);   return r;} public void onClick(View v) {   String[] weekday = new String[] { "Понедельник", "Вторник", "Среда" };    // нам нужен массив со второго элемента   String[] week = copyPartArray(weekday, 1); // вернёт Вторник и Среда   // выводим второй элемент из полученного массива, т.е. Среда   Toast.makeText(v.getContext(), week[1], Toast.LENGTH_LONG).show();}

Перемешать элементы массива

Бывает необходимость перемешать элементы массива в случайном порядке. В интернете нашёл готовый метод по алгоритму Fisher–Yates (прим.: Fisher - это рыбак, который ловит рыбу, например, кот)

// Implementing Fisher–Yates shufflestatic void shuffleArray(int[] ar) {   Random rnd = new Random();   for (int i = ar.length - 1; i > 0; i--) {          int index = rnd.nextInt(i + 1);          // Simple swap          int a = ar[index];          ar[index] = ar[i];          ar[i] = a;   }} // создадим массив и перемешаем егоint[] mSolutionArray = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,          13, 14 };shuffleArray(mSolutionArray); Log.i("Array", Arrays.toString(mSolutionArray));

Подводим итоги

1. Помните, что размер массива фиксируется и не может меняться на протяжении его жизненного цикла.

2. Если вам нужно изменять, то используйте ArrayList, который способен автоматически выделять дополнительное пространство, выделяя новый блок памяти и перемещая в него ссылки из старого.


Поделиться с друзьями:

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.