Как найти второе по величине значение в массиве?
С помощью метода find(); мне надо найти второе по величине значение в данном массиве.
Массив
const array = [1,2,5,4,9,3];
- Вопрос задан более двух лет назад
- 1279 просмотров
2 комментария
Простой 2 комментария
Вадим @MrDecoy Куратор тега JavaScript
Так, и? В чём сложность? Что у Вас не получается? Какой ход Ваших мыслей как это можно сделать?

Задания запрещены правилами. Находятся же такие, что их выполняют
Решения вопроса 0
Ответы на вопрос 4
Сергей Соколов @sergiks Куратор тега JavaScript
const max = Math.max(. array); const second = array.reduce((acc, c) => c === max ? acc : Math.max(acc, c));
Ответ написан более двух лет назад
Комментировать
Нравится 1 Комментировать

хочу быть хорошим IT-шником
Простите, но find — это, вроде, строковый инструмент. Как одна буква может быть больше другой?
Попробуйте без find-a:
#массив без повторяющихся элементов x=[50,40,60,80,20,90,100] first=0 #тут будет 1-й по размеру элемент second=0 # тут будет 2-й по размеру элемент for i in range(len(x)): print("рассмотрим элемент ",x[i],end=". ") if x[i]>first and x[i]>second: print("Он на первом месте! Бывший чемпион смещается на второе место.") second=first first=x[i] elif x[i]second: print("Он на втором месте") second=x[i] else: print("Он меньше first и second 0_0' ") print("first =",first,"second =",second,"\n")
Что является «вторым максимумом» в задаче?
Последовательность состоит из различных натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой последовательности. Гарантируется, что в последовательности есть хотя бы два элемента.
Моё решение:
old = int(input()) k=1 i = int(input()) while(i != 0): if(i>old): print(i) k+=1 break else: old = i i = int(input()) if(k!=2): print(old)

Пояснение: Допускаю, что цифра 0 может быть только в конце списка, поэтому проверку на ноль исключил. Как я понял, второй максимум — это вторая по величине цифра. Т.е. первая цифра всегда является первым максимумом, а второй максимум — любая цифра, превосходящая первый максимум. Однако, примеры с указанного выше сайта утверждают обратное. Пример: В чём я ошибаюсь и как решить тогда задачу? Спасибо.
Вывести второе по величине значение
Напишите программу, которая будет запрашивать на вход числа (каждое с новой строки) до тех пор, пока не будет введен ноль (0). На выход должно выводиться второе по величине значение.
. Ограничение: нельзя пользоваться готовой функцией для нахождения максимума (например, max()), готовыми функциями и методами сортировки (например, sort(),sorted()).
Я написала код, который запрашивает числа до нуля. Дальше никак. Help please
1 2 3 4 5
getnumber = int(input()) while getnumber!=0: getnumber = int(input()) if getnumber==0: break
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Вывести второе и предпоследнее по величине значение
Помогите доделать задачу.H.E.L.P.:( Задача: С клавиатуры вводятся количество целых чисел N и сами.
В массиве A[n] найти второе по величине число
Составить программу, которая в массиве A находит второе по величине число (вывести на печать число.
Найти и вывести значение последнего четного числа, максимального по абсолютной величине
Даны n целых чисел, принадлежащих отрезку . Найти и вывести значение последнего четного числа.
Найти второе по величине значение в последовательности
Суть задачи заключается,чтобы найти второе по величине значение.То есть мы вводим.
4459 / 3212 / 1125
Регистрация: 21.03.2016
Сообщений: 7,949
чтобы что то с чем то сравнивать нужно это что то где то хранить
Сообщение от kira123123 
Ограничение: нельзя пользоваться готовой функцией для нахождения максимума (например, max()), готовыми функциями и методами сортировки (например, sort(),sorted()
напишите свою реализацию например, max()
Регистрация: 17.01.2020
Сообщений: 4
Вот так я выводила максимум из вводимых через запятую чисел
1 2 3 4 5 6
getnumber = input().split(',') maximum = a[0] for i in getnumber: if i>=maximum : maximum = i print (maximum)
Просто Лис
![]()
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
Можно схитрить и хранить два максимальных числа.
1 2 3 4 5 6 7 8 9 10
lst = [1,2,10,12,0,5,4] maximum = lst.pop() maximum2 = lst.pop() for i in lst: if i > maximum: maximum2 = maximum # хитро! maximum = i elif i > maximum2: maximum2 = i print(maximum, maximum2)
Добавлено через 1 минуту
Сообщение от kira123123 
Дальше никак
Сохраняйте введённые числа в список.
![]()
![]()
35346 / 19946 / 4179
Регистрация: 12.02.2012
Сообщений: 33,093
Записей в блоге: 13
Рыжий Лис, не так просто. Подставьте lst = [1,2,10,12,0,15,4] и убедитесь.
Просто Лис
![]()
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
1 2 3 4
maximum = lst.pop() maximum2 = lst.pop() if maximum2 > maximum: maximum, maximum2 = maximum2, maximum
Регистрация: 26.02.2020
Сообщений: 1
Из скиллбокс задания?)) На костылях, но рабочее
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
num = [] inp = int(input()) num.append(inp) while inp != 0: inp = int(input()) num.append(inp) new_num = [] num_max_second = num[0] for i in num: if i > num_max_second: num_max_second = i new_num.append(num_max_second) print(new_num[-2])
4751 / 2643 / 547
Регистрация: 07.11.2019
Сообщений: 4,359
Вычисление по мере ввода чисел:
1 2 3 4 5 6 7 8 9 10
a=[-float('Inf'), -float('Inf')] while 1: getnumber = float(input()) if getnumber==0.0: break if a[0]getnumber: a[0]=getnumber if a[0]>a[1]: a[0],a[1]=a[1],a[0] print(a[0])
287 / 168 / 90
Регистрация: 21.03.2016
Сообщений: 398
Второе по величине — это второе от минимального?
Добавлено через 43 минуты
Громоздко, но самый примитивный алгоритм.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
a=[] while 1: getnumber = float(input()) if getnumber==0.0: break a.append(getnumber) N = len(a) print(a) # Самая простая сортировка пузырьком for i in range(N-1): for j in range(N-i-1): if a[j] > a[j+1]: a[j], a[j+1] = a[j+1], a[j] print(a) # Удаляем повторения k=0 while k != len(a)-1: if a[k] == a[k + 1]: a.pop(k) else: k+=1 print(a) print(a[1]) # Второй по величине
Status 418
![]()
4359 / 2257 / 589
Регистрация: 26.11.2017
Сообщений: 5,187
Записей в блоге: 3
мда. по-старинке:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
a = [1, 2, 10, 12, 0, 15, 4] if a[0] > a[1]: max1, max2 = a[0], a[1] else: max1, max2 = a[1], a[0] for x in a[2:]: if x > max1: max1, max2 = x, max1 else: if x > max2: max2 = x print(max1, max2)
Регистрация: 03.10.2020
Сообщений: 4
Сообщение от eaa 
мда. по-старинке:
Не работает:
[4, 0, 9, -7, 8, 0, 9, 2, 4, 0] => ответ 9 9
[15, 15, 4] => ответ 15 15
Если все числа одинаковые или массив состоит из одного элемента, второго максимального просто не будет. У меня получилось вот так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
from random import random # заполним массив случайными числами a = [] for i in range(10): a.append(round(random() * 20 - 10)) # распечатаем исходный массив print(a) # инициализация переменных max = a[0] # максимальное значением массива max2 = -1 # второе максимальное значением массива max2_found = 0 # признак нахождения второго максимального значения for k in a: if k > max: # если нашли новый максимум, то сдвигаем max2 = max max = k max2_found = 1 elif max2_found == 1 and k max and k > max2: # если нашли число между максимумом и уже ранее # найденным вторым максимумом, то уточняем max2 max2 = k elif max2_found == 0 and k max: # если нашли первый раз число, которое меньше # максимума, то сохраняем как max2 max2 = k max2_found = 1 # для наглядности отсортируем по убыванию и распечатаем массив a.sort() a.reverse() print(a) # распечатаем результат if max2_found == 1: print(max2) else: print("max2 not found")
Как найти второе по величине число в python
Для целых чисел определены операции + , — , * и ** . Операция деления / для целых чисел возвращает вещественное число (значение типа float ). Также функция возведения в степень возвращает значение типа float , если показатель степени — отрицательное число.
Но есть и специальная операция целочисленного деления, выполняющегося с отбрасыванием дробной части, которая обозначается // (она соответствует операции div в Паскале). Она возвращает целое число: целую часть частного. Другая близкая ей операция − это операция взятия остатка от деления, обозначаемая % (она соответствует операции mod в Паскале). Например:
print(17 / 3) # выведет 5.66666666667 print(17 // 3) # выведет 5 print(17 % 3) # выведет 2
2. Действительные числа
В этом разделе речь пойдет о действительных числах, имеющих тип float .
Обратите внимание, что если вы хотите считать с клавиатуры действительное число, то результат, возращаемый функцией input() необходимо преобразовывать к типу float :
1.492
x = float(input()) print(x)
Действительные (вещественные) числа представляются в виде чисел с десятичной точкой (а не запятой, как принято при записи десятичных дробей в русских текстах). Для записи очень больших или очень маленьких по модулю чисел используется так называемая запись «с плавающей точкой» (также называемая «научная» запись). В этом случае число представляется в виде некоторой десятичной дроби, называемой мантиссой, умноженной на целочисленную степень десяти (порядок). Например, расстояние от Земли до Солнца равно 1.496·10 11 , а масса молекулы воды 2.99·10 -23 .
Числа с плавающей точкой в программах на языке Питон, а также при вводе и выводе записываются так: сначала пишется мантисса, затем пишется буква e , затем пишется порядок. Пробелы внутри этой записи не ставятся. Например, указанные выше константы можно записать в виде 1.496e11 и 2.99e-23 . Перед самим числом также может стоять знак минус.
Напомним, что результатом операции деления / всегда является действительное число ( float ), в то время как результатом операции // является целое число ( int ).
Преобразование действительных чисел к целому производится с округлением в сторону нуля, то есть int(1.7) == 1 , int(-1.7) == -1 .
3. Библиотека math
Для проведения вычислений с действительными числами язык Питон содержит много дополнительных функций, собранных в библиотеку (модуль), которая называется math .
Для использования этих функций в начале программы необходимо подключить математическую библиотеку, что делается командой
import math
Например, пусть мы хотим округлять вещественные числа до ближайшего целого числа вверх. Соответствующая функция ceil от одного аргумента вызывается, например, так: math.ceil(x) (то есть явно указывается, что из модуля math используется функция ceil ). Вместо числа x может быть любое число, переменная или выражение. Функция возращает значение, которое можно вывести на экран, присвоить другой переменной или использовать в выражении:
import math x = math.ceil(4.2) y = math.ceil(4.8) print(x) print(y)
Другой способ использовать функции из библиотеки math , при котором не нужно будет при каждом использовании функции из модуля math указывать название этого модуля, выглядит так:
from math import ceil x = 7 / 2 y = ceil(x) print(y)
from math import * x = 7 / 2 y = ceil(x) print(y)
Ниже приведен список основных функций модуля math . Более подробное описание этих функций можно найти на сайте с документацией языка Питон.
