2015-06-17 4 views
-1

Мне было поручено написать программу java, которая генерирует массив из 20 случайных чисел int [-10; 10]. Затем я должен переключить максимальные отрицательные и минимальные положительные элементы этого сгенерированного массива.Переключение Максимальные отрицательные и минимальные положительные элементы сгенерированного массива int

Массив:

public class Array 

public static void main(String[] args) { 
    int arr[]; 
    arr = new int [20]; 
    for (int i=0;i<arr.length;i++) 
      arr[i] = (int) (Math.random() * 21)-10; 
    for (int i: arr) 
      System.out.print(i + " "); 
} 

Итак, как же я переключать сгенерированные элементы? Как найти минимальные положительные и минимальные отрицательные элементы? Какие методы я должен использовать?

+1

Можете ли вы опубликовать код того, что вы пробовали? – River

+2

[Вопросы, требующие помощи в выполнении домашних заданий **, должны содержать резюме работы, которую вы сделали до сих пор для решения проблемы **, и ** описание трудности, с которой вы решаете ее **.] (Https://stackoverflow.com/help/on-topic). Пожалуйста, отредактируйте свой вопрос, чтобы добавить всю необходимую информацию. – Pshemo

ответ

0

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

Итерации через ваш массив, держите max и min + их позиции (maxPos и minPos). Затем включите их с помощью aux:

int max = arr[0], min = arr[0]; 
    int maxPos = 0, minPos = 0; 
    for (int i = 1; i < arr.length; i++) { 
     if (max > arr[i]) { 
      max = arr[i]; 
      maxPos = i; 
     } 
     if (min < arr[i]) { 
      min = arr[i]; 
      minPos = i; 
     } 
    } 

    int aux = arr[maxPos]; 
    arr[maxPos] = arr[minPos]; 
    arr[minPos] = aux; 

Другой метод, чтобы переключить эти цифры без aux:

arr[maxPos] += arr[minPos]; 
    arr[minPos] = arr[maxPos] - arr[minPos]; 
    arr[maxPos] -= arr[minPos]; 

, но это сложнее.

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