Найти максимальное целое число в массиве? - PullRequest
4 голосов
/ 29 августа 2009

У меня есть два массива, один очень большой (более миллиона записей), а другой - маленький (менее 1000 записей). Какой наилучший подход для нахождения максимального числа из всех записей в массивах?

Спасибо.

Ответы [ 7 ]

15 голосов
/ 29 августа 2009

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

5 голосов
/ 29 августа 2009

Если вы думаете об этом, если вы хотите найти самое высокое значение, вы должны проверить все значения. Обойти это невозможно (если только массивы не отсортированы, что просто - достаточно взять последний (или первый, если отсортирован по убыванию) каждого массива и взять самый большой). Пример:

int highest = array1[i]; // note: don't do this if the array could be empty
for(int i = 0; i < array1.length; i++) {
    if(highest<array1[i]) highest = array1[i];
}
for(int i = 0; i < array2.length; i++) {
    if(highest<array2[i]) highest = array2[i];
}  
// highest is now the highest
4 голосов
/ 29 августа 2009

Если ваши массивы уже отсортированы, вы можете просто прыгнуть до конца с максимумом.

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

1 голос
/ 25 декабря 2014

Здесь я даю простой код для нахождения значения Maximum из массива int.Моя логика: - массив int [] arr = {8,5,6,7,3,4,9}.сначала возьмем временную переменную и поместим первое значение в эту переменную и предположим, что это максимальное значение, т. е. tempValue = arr [0].А внутри цикла for возьмите блок if и проверьте, что второе значение больше первого или нет.Аналогично, если блок автоматически проверит остальные значения.Наконец, максимальное значение будет присвоено во временной переменной и получит результат. Максимальное значение равно 9 в данном массиве.

открытый класс MaxIntArray {

  public static void main(String[] args){


    int[] arr={8,5,6,7,3,4,9};

    int tempValue=arr[0];

    for(int i=0;i<arr.length;i++){
        if(arr[i]>tempValue){
            tempValue=arr[i];
        }

    }
    System.out.println("\n Maximum Value in the Given Array = "+tempValue);

 }

}

Вывод: - Максимальное значение в данном массиве = 9

0 голосов
/ 03 октября 2017

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

    int[] values = {8,3,7,10,5};
    max = 0; 
    for(int i = 0;i < values.length;i++){
     if(values[i] > max){
        max = values[i];
       }
    }
    System.out.println(max);
0 голосов
/ 25 декабря 2014

Здесь я даю простой код для нахождения значения Maximum из массива int. Моя логика: - массив int [] arr = {8,5,6,7,3,4,9}. сначала возьмем временную переменную и поместим первое значение в эту переменную и предположим, что это максимальное значение, т.е. tempValue = arr [0]. А внутри цикла for возьмите блок if и проверьте, что второе значение больше первого или нет. Аналогично, если блок автоматически проверит остальные значения. Наконец, максимальное значение будет присвоено во временной переменной и получит результат. Максимальное значение равно 9 в данном массиве.

открытый класс MaxIntArray {

 public static void main(String[] args){


    int[] arr={8,5,6,7,3,4,9};

    int tempValue=arr[0];

    for(int i=0;i<arr.length;i++){
       if(arr[i]>tempValue){
        tempValue=arr[i];
       }

   }
   System.out.println("\n Maximum Value in the Given Array = "+tempValue);

}

}

// Вывод: - Максимальное значение в данном массиве = 9

0 голосов
/ 26 сентября 2013

Мы можем сократить ваше количество операций или сравнение до 3 (n / 2-2). от 2n (n для нахождения максимального числа с использованием линейного поиска и n для минимума). Допустим, у нас есть массив элементов [1,9,8,7,4,5,1,4,7,8,1,6]. Установите для первого элемента значение Max = 1, а рядом - Min = 9, теперь возьмите одновременно следующие два элемента массива, сравните их, а затем сравните с Max и Min. Таким образом, одна итерация требует только 3 сравнения, но массив сокращается до n / 2. Таким образом, общее количество сравнения будет 3 (н / 2-2). Пример:

Max=arr[1];

Min=arr[2];

for(int i=3; i< arr.length;i=i+2)

{

if(arr[i]>arr[i+1]) 

{

if(Max < arr[i])

Max=arr[i];

if(Min > arr[i+1])

Min=arr[i+1];

}

else 

{

if(Max < arr[i+1])

Max=arr[i+1];

if(Min > arr[i])

Min=arr[i];

}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...