Самый простой вариант - сделать второй проход, запомнив индекс максимального элемента, который был установлен в предыдущем проходе. При втором проходе просто пропустить его, выполнив проверку (к примеру if not i=2 then if a(i) > max then max:=a(i) )
var
max1, ind, max2, i : integer;
a : array [1..100] of integer;
begin
randomize;
for i:=1 to 100 do
a(i) := random(200);
max1 := a(i);
for i:=2 to 100 do
if a(i) > max1 then begin max1 := a(i); ind = i; end;
max2 := a(i);
for i:=2 to 100 do
if (a(i) > max2) and (i <> ind) then max2 := a(i);
writeln('max1=', max1, ' max2=', max2);
end.
Примерно так. Писал по памяти, нет под рукой компилятора. (i) замените на квадратные скобки.
Другие языки программирования и технологии
Паскаль. В линейном массиве найти два максимальных элемента.
стучи в аську напишу бесплатно 387538869
После того, как одно максимальное число найдено, ищите второе точно так же, но при этом сравнивайте с первым (его занести в отдельную переменную) . Т. е. оно должно получиться больше всех чисел в массиве, кроме первого числа.
код С#
________
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
int[] initArr = new int[10000];
for (int i = 0; i < initArr.Length; i++)
{
initArr[i] = rnd.Next(-1000, 1000);
}
var outArr = Sort(initArr, 10);
}
private static int[] Sort(int[] array, int count)
{
int[] outArr = new int[count];
for (int i = 0; i < outArr.Length; i++)
{
int[] sorted = new int[count];
for (int j = 0; j < array.Length; j++)
{
if (!sorted.Contains(array[j]) && array[j] == array.Max())
{
outArr[i] = array[j];
array[j] = 0;
}
}
}
return (int[]) outArr.Reverse();
}
}
}
Выбирает из массива А массив максимальных чисел Б. В массиве А числа могут повторяться и поэтмоу также считаются максимальными. Требует доработки, т. к. 5 элементов из 10000 массива выберет за 6 сек. А если надо будет выбрать 1000?? Прикрути linq и возможно будет тебе праздник, но не факт, скорее всего еще медленее станет работать
________
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
int[] initArr = new int[10000];
for (int i = 0; i < initArr.Length; i++)
{
initArr[i] = rnd.Next(-1000, 1000);
}
var outArr = Sort(initArr, 10);
}
private static int[] Sort(int[] array, int count)
{
int[] outArr = new int[count];
for (int i = 0; i < outArr.Length; i++)
{
int[] sorted = new int[count];
for (int j = 0; j < array.Length; j++)
{
if (!sorted.Contains(array[j]) && array[j] == array.Max())
{
outArr[i] = array[j];
array[j] = 0;
}
}
}
return (int[]) outArr.Reverse();
}
}
}
Выбирает из массива А массив максимальных чисел Б. В массиве А числа могут повторяться и поэтмоу также считаются максимальными. Требует доработки, т. к. 5 элементов из 10000 массива выберет за 6 сек. А если надо будет выбрать 1000?? Прикрути linq и возможно будет тебе праздник, но не факт, скорее всего еще медленее станет работать
нужен только алгоритм или прога? Тип переменных в массиве?
Похожие вопросы
- линейный массив. в линейном массиве найти два наибольших числа и переставить их помогите пожалуйста,заранее спасибо)
- как найти количество максимальных элементов в массиве? на асемблере. на асемблере
- даны три массива A[6,6], B[6,6],C[6,6]. найти сумму максимальных элементов, расположенных на главной диагонали
- Данная последовательность из n целых чисел. Найти номер максимального элемента в этой последовательности. Новинка!
- программа в Паскале. Найти максимальный элемент из элементов массива, расположенных над главной диагональю.
- Помогите. Не могу понять как работает поиск максимального элемента массива!!
- помогите решить задачку по информатике на паскале. найти минимальный и максимальный элемент двухмерного массива
- Помогите с массивами! Найти и вывести на экран сумму нечётных элементов массива и количество отрицательных.
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
- Паскаль, одномерн массив, вычислить сумму элементов массива, расположенных после последнего элемента, равного нулю. Спасибо)