0

В классе наш учитель попросил нас отсортировать список массивов, а затем вернуть его в виде 2D-массива с каждым изменением.Java: Сортировка Список массивов и возврат в виде 2D-массива

Это массив: 35, 7, 63, 42, 24, 21 и в конце концов программа должна распечатать так:

[7 35 63 42 24 21]

[ 7 21 63 42 24 35]

[7 21 24 42 63 35]

[7 21 24 35 63 42]

[7 21 24 35 42 63]

[7 21 24 35 42 63]

У меня следующий код, но так или иначе он просто не работает (обратите внимание, что государственная статическая сила уже дана, поэтому мы должны осуществлять общественный статический Int [] [] сортировку выбора (интермедиат [] a)

Что в этом плохого?

public static void main(String[] args) { 

    int[] a = new int[] { 35, 7, 63, 42, 24, 21 }; 
    int[][] c = selectionsort(a); 
    for (int i = 0; i < c.length; i++){ 
     System.out.print("[ "); 
     for (int j = 0; j < c[i].length; j++) { 
      System.out.print(c[i][j]+" ");  
     } 
     System.out.println("]"); 
    } 
    /* 
    * expected printout 
    * [ 7 35 63 42 24 21 ] 
    * [ 7 21 63 42 24 35 ] 
    * [ 7 21 24 42 63 35 ] 
    * [ 7 21 24 35 63 42 ] 
    * [ 7 21 24 35 42 63 ] 
    * [ 7 21 24 35 42 63 ] 
    */ 
} 
public static int[][] selectionsort(int[] a) { 

    for (int i = 0; i < a.length - 1; i++) { 
     for (int j = i + 1; j < a.length; j++) { 
      if (a[i] > a[j]) { 
       int temp = a[i]; 
       a[i] = a[j]; 
       a[j] = temp; 
      } 
     } 
    } 

    return a; 
} 
+0

Вам нужно создать 2D массив для заполнения и возврата в выборе рода, а не возвращение аргумент а. – WillShackleford

+0

Хорошо, я понимаю это, но как это сделать? Я новичок, и я действительно не знаю ... – Yanlu

+0

Что хочет ваш учитель, так это то, что вы создаете копию массива, отсортированную на каждой итерации алгоритма сортировки, и храните эту копию как элемент массива или массива int. Когда алгоритм завершен, верните массив массивов, содержащих все промежуточные копии. Итак, google для «как определить 2D-массив в Java» и «как создать копию массива в Java». –

ответ

1

Вы должны следить за массив, поместив его в 2D массив после каждой итерации, и вернуться, что 2D массив

public class Main { 

public static void main(String[] args) { 

    int[] a = new int[]{35, 7, 63, 42, 24, 21}; 
    int[][] c = selectionsort(a); 
    for (int i = 0; i < c.length; i++) { 
     System.out.print("[ "); 
     for (int j = 0; j < c[i].length; j++) { 
      System.out.print(c[i][j] + " "); 
     } 
     System.out.println("]"); 
    } 
/* 
* expected printout 
* [ 7 35 63 42 24 21 ] 
* [ 7 21 63 42 24 35 ] 
* [ 7 21 24 42 63 35 ] 
* [ 7 21 24 35 63 42 ] 
* [ 7 21 24 35 42 63 ] 
* [ 7 21 24 35 42 63 ] 
*/ 
} 

public static int[][] sort(int[] a) { 
    int result[][] = new int[a.length][a.length]; 

    for (int i = 0; i < a.length; i++) { 
     for (int j = i + 1; j < a.length; j++) { 
      if (a[i] > a[j]) { 
       int temp = a[i]; 
       a[i] = a[j]; 
       a[j] = temp; 
      } 
     } 

     for (int k = 0; k < a.length; k++) { 
      result[i][k] = a[k]; 
     } 
    } 

    return result; 
} 
} 
0

Я не проверил выбора сортировки логики вы реализованы, но проблема дается в любом стандартном компиляторе: Несоответствие типов: невозможно преобразовать из ИНТ [] для ИНТ [] []

Что вам нужно сделать: Вы должны вернуть историю алгоритма сортировки выбора, который представляет собой двумерный массив с каждой строкой, шаг в алгоритме сортировки выбора.

Что вы сделали: Вы вернули решение алгоритма сортировки, являющегося одномерным массивом.

+0

Как вернуть 2-мерный массив? Я знаю, что мне нужно вернуть историю, но я не знаю, как это сделать. – Yanlu

Смежные вопросы