2016-07-27 5 views
1

Я хочу отсортировать массив, используя метод swap(), как показано в коде. Я хочу знать, как передать массив и отсортировать его.Как передать массив и текущий индекс методу в Java

public class Test { 
    public static void main(String[] args) { 
     int [] ar = {9, 4, 5, 3, 1, 8, 4, 2, 0}; 
     System.out.println(Arrays.toString(ar)); 
     for (int i = 0; i<ar.length-1; i++){ 
      for (int j = i+1; j<ar.length; j++){ 
       swap(ar[i], ar[j]); 
      } 
     } 
     System.out.println(Arrays.toString(ar)); 
    } 
    private static void swap(int i, int j) { 
     int temp; 
     if(i>j){ 
      temp = j; 
      j = i; 
      i= temp; 
     }  
    } 
} 
+5

Вы объявляете параметр метода типа массива: 'int [] ar'. –

+0

Вы имеете в виду, что я должен объявить его как: private static void swap (int [], int []) {...} – Eid

+0

Нет, вы добавляете * третий * параметр для массива –

ответ

2

Массивы подобны любым другим типам. Если вы хотите передать массив методу, объявите параметр этого типа, например.

private static void swap(int[] ar, int i, int j) { ... } 
         ^This is a parameter of type int[]. 

Обратите внимание, что i и j вы передаете должны быть указатели, а не значения в массиве:

swap(ar, i, j); 

и переставить элементы таким образом:

temp = ar[i]; 
ar[i] = ar[j]; 
ar[j] = temp; 
+0

Спасибо. Это было полезно. – Eid

+0

@ Если вы также можете заменить 2 значения без временной переменной: 'ar [i]^= ar [j]; ар [J]^= ар [I]; ар [г]^= ар [J]; '. Это отличная история, чтобы рассказать, когда вы с друзьями в пабе. Но я бы не рекомендовал его. – bvdb

+0

Кажется интересным. спасибо – Eid

0

Самый простой способ будет :

private static void swap(int[] ar, int i, int j) { 
    //Do work here 
} 
+0

Извините, забыли, что массивы были на месте на секунду. –

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