В общем и целом, точно так же, как и в языках высокого уровня.
Элементы по очереди сравниваются со значением текущего минимума. Если текущий элемент меньше минимума, то он становится новым минимумом. И так продолжается, пока весь массив не будет проверен.
За начальное значение минимума можно принять заведомо большое значение или взять первый элемент массива.
Конкретная реализация зависит от процессора/контроллера. Знаковые или беззнаковые элементы массива. От размера элементов (byte, word, dword), а также целые они или с плавающей запятой.
Вот пример поиска минимума для процессора i8086, массив знаковых чисел размером 1 байт:
.model small
.data
array db 15,-100,50,0; и т. д. элементы массива
len equ $ - array; кол-во элементов
min db ?; значение минимального элемента
imin dw ?; индекс минимального элемента
.stack 100h
.code
start:
mov ax,@data
mov ds,ax
mov cx,len
dec cx
xor di,di; указатель на 1-й элемент, принятый за начальный минимум
mov si,1; указатель на 2 элемент (его индекс 1)
cycle:
mov al,array[si]
cmp al,array[di]
jge next
mov di,si
next:
inc si
loop cycle
mov imin,di; запись индекса минимального элемента
mov al,array[di]
mov min,al; запись значения минимального элемента
; ...
mov ah,4ch
int 21h
end start
Программа находит минимум в массиве и сохраняет его в переменной min. Также в переменной imin сохраняется индекс минимального элемента.
Если элементы массива беззнаковые числа, то команду jge нужно заменить на jae (или jc, что то же самое) .
Если размеры элементов больше байта, то нужно db поменять на dw или dd и учитывать это при индексации, вычислении кол-ва элементов массива, а так же в командах сравнения использовать соответствующий аккумулятор.
Кол-во элементов может быть не постоянным, например вводиться с клавиатуры, тогда следует завести переменную, для его хранения.
Если элементы представляют из себя числа с плавающей запятой, то придётся использовать сопроцессор.
Можно использовать команды строковых операций lods(b | w | d), но нужно учитывать, что инкремент индекса в этом случае происходит автоматически сразу после считывания элемента в аккумулятор.
Если процессор, например, i8080, i8085 или Z80, то для знаковых чисел придётся дополнительно вручную анализировать знаковые разряды.
Как видите, всё довольно просто, но нужна очень детальная конкретизация задачи.
Другие языки программирования и технологии
Как а в ассемблере найти минимальный элемент массива?
xor al,al
mov cx,100
start:
cmp al,[dx]
jnc big
mov al,[dx]
big:
inc dx
dec cx
jnz start
/// примерно так!
mov cx,100
start:
cmp al,[dx]
jnc big
mov al,[dx]
big:
inc dx
dec cx
jnz start
/// примерно так!
Соответствующими командами: либо с помощью соответствующей команды выбора минимума в цикле, либо с помощью условного перехода в зависимости от возможностей ассемблера
Похожие вопросы
- задача в pascale. дан массив. Найти минимальный элемент и отсортировать все элементы стоящие после него.
- Найти минимальный элемент в матрице
- задан массив(с++) n*m нужно найти минимальный элемент в каждой строчке, а затем среди них максимальный
- Дано множество некоторых целых положительных чисел. Найти минимальный элемент множества.
- C# Дан массив размера N. Найти 2 элемента массива, сумма которых наиболее близка к максимуму массива и поменять
- найти произведение элементов массива, расположенных после максимального по модулю элемента
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
- Помогите с массивами! Найти и вывести на экран сумму нечётных элементов массива и количество отрицательных.
- задачка PAscal. найти сумму положительных элементов массива, расположенных до минимального элемента этого массива
- Помогите с С++. Надо найти произведение элементов одномерного массива между первым и последним 0.