Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Java] Объединение массивов


Автор: dawystrik 23.3.2010, 14:42
У меня дана лабораторная работа:
Заданы два массива x и y вещественных чисел размерностью m и n соответственно. Элементы каждого из этих массивов упорядочены по неубыванию. Объединить элементы этих двух массивов в один массив z так, чтобы они снова оказались упорядоченными по неубыванию.


Код

public class MyArr {

public static void main (String[] args) {

double x[] = {2.2, 1.1, 5.5, 3.3, 4.4};
double y[] = {9.9, 7.7, 6.6, 8.8};

double k,l;

boolean flag = true;
boolean flag2 = true;

System.out.println ("Sort array x[]:");


while (flag){
   flag = false;
   for (int i = 0; i<x.length-1; i++){
        
        if (x[i] > x[i+1]) {

            k = x[i];
            x[i] = x[i+1];
            x[i+1] = k;
            flag = true;
        } 
   }
}
for (int i = 0; i < x.length; i++){
   System.out.println(x[i] + " ");
}
System.out.println ("Sort array y[]:");

while (flag2){
   flag2 = false;
   for (int i = 0; i< y.length-1; i++){
        
        if (y[i] > y[i+1]) {

            l = y[i];
            y[i] = y[i+1];
            y[i+1] = l;
            flag2 = true;
        } 
   }
}
for (int i = 0; i < y.length; i++){
   System.out.println(y[i] + " ");
}
}
}


Я создала 2 массива,отсортировала их по возрастанию,теперь мне надо объединить эти 2 массива в массиве z и отсортировать по возрастанию. Как их объединить? Подскажите, плиз. Я читала что делать это надо при помощи копирования или клонирования,но не очень разобралась с этим материалом и не очень его поняла.

Заранее благодарю.

Автор: MaxPayneC 23.3.2010, 15:05
Код

        int[] x = new int[]{1, 2};
        int[] y = new int[]{4, 2};
        List<Integer> list = new LinkedList<Integer>();
        for (int i = 0; i < x.length; ++i)
        {
            list.add(x[i]);
        }
        for (int i = 0; i < y.length; ++i)
        {
            list.add(y[i]);
        }
        Collections.sort(list);
        Integer[] values = (Integer[]) list.toArray(new Integer[list.size()]);

Автор: LSD 23.3.2010, 17:19
Код

import java.util.Arrays;

public class MyArr
{
  public static void main(String[] args)
  {
    double[] x = {2.2, 1.1, 5.5, 3.3, 4.4, 10.1};
    System.out.println("Sort array x[]:");
    sort(x);
    System.out.println(Arrays.toString(x));

    double[] y = {9.9, 7.7, 6.6, 8.8};
    System.out.println("Sort array y[]:");
    sort(y);
    System.out.println(Arrays.toString(y));


    System.out.println("Merge x[] and y[]:");
    double[] merged = merge(x, y);
    System.out.println(Arrays.toString(merged));
  }

  public static void sort(double[] array)
  {
    boolean flag = true;
    while(flag)
    {
      flag = false;
      for(int i = 0; i < array.length - 1; i++)
      {

        if(array[i] > array[i + 1])
        {
          double k = array[i];
          array[i] = array[i + 1];
          array[i + 1] = k;
          flag = true;
        }
      }
    }
  }

  public static double[] merge(double[] x, double[] y)
  {
    final int size = x.length + y.length;
    double[] res = new double[size];
    int i = 0;
    int ix = 0;
    int iy = 0;
    while(i < size && ix < x.length && iy < y.length)
    {
      if(x[ix] < y[iy])
      {
        res[i] = x[ix];
        ix++;
      }
      else
      {
        res[i] = y[iy];
        iy++;
      }
      i++;
    }

    while(ix < x.length)
    {
      res[i] = x[ix];
      ix++;
      i++;
    }


    while(iy < y.length)
    {
      res[i] = y[iy];
      iy++;
      i++;
    }

    return res;
  }
}

Автор: ivanovpv 23.3.2010, 17:56
Ндааа brute-force я гляжу нынче все еще в моде...

Код

public class MyArr {
public static void main (String[] args) {
double x[] = {2.2, 1.1, 5.5, 3.3, 4.4};
double y[] = {9.9, 7.7, 6.6, 8.8};
double z[] = new double[x.length+y.length];

System.arraycopy(x, 0, z, 0, x.length); //копируем массив x в начало z
System.arraycopy(y, 0, z, x.length, y.length); //копируем массив y в конец z

//далее сортируем полученный массив z - это уже просто...

//... сами допишете


Автор: dawystrik 23.3.2010, 18:18
спасибки,всё вышло,я немного подкорректировала,и вот вышло:
Код

public class MyArr {

public static void main (String[] args) {

double x[] = {1.8, 2.4, 6.5, 3.9, 6.1};
double y[] = {1.3, 5.4, 2.5, 6.4, 10.5};
double z[] = new double[x.length+y.length];

double k,l,m;

boolean flag = true;
boolean flag2 = true;
boolean flag3 = true;

System.out.println ("Array x[]:");
for (int i = 0; i < x.length; i++){
   System.out.println(x[i] + " ");
}

System.out.println ("Sort array x[]:");

while (flag){
   flag = false;
   for (int i = 0; i<x.length-1; i++){
        
        if (x[i] > x[i+1]) {

            k = x[i];
            x[i] = x[i+1];
            x[i+1] = k;
            flag = true;
        } 
   }
}
for (int i = 0; i < x.length; i++){
   System.out.println(x[i] + " ");
}

System.out.println ("Array y[]:");
for (int i = 0; i < y.length; i++){
   System.out.println(y[i] + " ");
}

System.out.println ("Sort array y[]:");

while (flag2){
   flag2 = false;
   for (int i = 0; i< y.length-1; i++){
        
        if (y[i] > y[i+1]) {

            l = y[i];
            y[i] = y[i+1];
            y[i+1] = l;
            flag2 = true;
        } 
   }
}
for (int i = 0; i < y.length; i++){
   System.out.println(y[i] + " ");
}
System.arraycopy(x, 0, z, 0, x.length); 
System.arraycopy(y, 0, z, x.length, y.length); 
System.out.println ("Array z[]:");
for (int i = 0; i < z.length; i++){
System.out.println(z[i]);
}
System.out.println ("Sort array z[]:");

while (flag3){
   flag3 = false;
   for (int i = 0; i< z.length-1; i++){
        
        if (z[i] > z[i+1]) {

            m = z[i];
            z[i] = z[i+1];
            z[i+1] = m;
            flag3 = true;
        } 
   }
}
for (int i = 0; i < z.length; i++){
   System.out.println(z[i] + " ");
}
}
}



Автор: dawystrik 23.3.2010, 18:47
ещё у меня такой вопросик,как использовать утилиту javadoc???
Просто у меня ещё в задании стоит:
Получить документацию на разработанное приложение при помощи утилиты javadoc.exe

Автор: LSD 23.3.2010, 19:07
http://java.sun.com/j2se/javadoc/faq/index.html#usingjavadoc

Автор: dawystrik 23.3.2010, 19:17
а можно ссылочку на русском?

Автор: jk1 23.3.2010, 22:14
http://www.life-prog.ru/view_zam.php?id=71&cat=4&page=2

Автор: dawystrik 24.3.2010, 11:11
а ведь правильно,исходя из моего кода,у меня один класс и один метод,да?

Автор: dawystrik 24.3.2010, 12:04
а как можно в моем коде сделать несколько методов??я просто в них не очень разбираюсь

Автор: LSD 24.3.2010, 12:56
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: dawystrik 24.3.2010, 13:02
а этот тут при чем?я всего лишь вопрос задала,а Вы уже куда-то тему переносите,если Вам тяжело ответить,то так и скажите,и это не домашнее задание и не курсовая,так что зачем переносить тему в тот раздел, которому она не соответствует

Автор: LSD 24.3.2010, 17:33
Цитата(dawystrik @  24.3.2010,  13:02 Найти цитируемый пост)
Вам тяжело ответить,то так и скажите,и это не домашнее задание и не курсовая,так что зачем переносить тему в тот раздел, которому она не соответствует 

Раздел как раз соответствует.
Цитата(dawystrik @  23.3.2010,  14:42 Найти цитируемый пост)
У меня дана лабораторная работа:

Этот раздел как раз и предназначен для тем с просьбами все написать за тебя. Например ты спрашиваешь:
Цитата(dawystrik @  24.3.2010,  12:04 Найти цитируемый пост)
а как можно в моем коде сделать несколько методов??

при том что мой пример как раз и содержит несколько методов. Раз ты сама не можешь взять мой код за образец и переделать, то топику самое место в Центре помощи.

Автор: dawystrik 25.3.2010, 09:21
извините,я вначале вообще не увидела,чтобы вы что-то писали,я уже и так без Вашей помощи всё сделала четко,ясно и лаконично,а Ваш вариант мне не подходит,уж сильно вы там всё перекрутили и очень много расписали,у меня вышло коротко,четко,ясно и лаконично

Добавлено @ 09:23
Цитата(LSD @ 24.3.2010,  17:33)
Цитата(dawystrik @  23.3.2010,  14:42 Найти цитируемый пост)
У меня дана лабораторная работа:

Этот раздел как раз и предназначен для тем с просьбами все написать за тебя. 

Простите,а покажите мне где я написала и попросила написать за меня код???покажите мне такое сообщение:дату и время!

Добавлено @ 09:26
тем более,что код был уже в самом начале написан мною,если Вы не обратили внимания,в самом начале,и если бы я хотела,чтобы кто-то что-то сделал за меня  обратилась бы действительно в другой раздел,дала бы условие лабы и написала бы следующее - Напишите мне пожалуйста код,сделайте за меня!
А я лишь задала простой и элементарный вопрос,если вы не способны и не компетентны на него ответить, тогда мне остается только руками развести.

Добавлено @ 09:30
тем более что код у вас честно говоря уж сильно накрученный и перекрученный,я четко взяла 3 метода каждый с названием массива и там работала с отдельными массивами

Автор: LSD 25.3.2010, 16:08
Мой вариант:
а) короче
б) не содержит повторений (у тебя один и тот же кусок кода повторяется 3 раза)
в) оптимальней с точки зрения производительности
г) лучше отформатирован smile 


Но речь шла не о том. Речь идет о том, что я просто взял твой код и вынес повторяющиеся фрагменты кода, в отдельный метод sort(). Потом ты приходишь и пишешь
Цитата(dawystrik @  24.3.2010,  12:04 Найти цитируемый пост)
а как можно в моем коде сделать несколько методов??

Как это понимать кроме как, что тебе не достаточно готового примера и надо написать за тебя, я не знаю.

Автор: dawystrik 25.3.2010, 19:16
просто не надо додумывать лишнего, повторюсь ещё раз,что если бы я хотела, чтобы за меня сделали,я бы так и сказала, а то что вы придумали - это всего лишь плод вашего воображения, а по поводу методов я задала столь глупый вопрос, потому как абсолютно ничего в них не понимала, а теперь начинаю понемногу разбираться и повторюсь ещё раз, что когда написала про методы я не видела вашего сообщения с кодом, я увидела только последнее сообщение, просто наперед - не надо придумывать и решать что-то за кого-то, если вам об этом не говорят

Автор: tanship 3.6.2010, 21:14
import java.util.Arrays;

Arrays.sort(z);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)