Здравствуйте уважаемые форумчане. Помогите пожалуйста решить задачу.
Условие:
В массиве целых знаковых чисел (минимум 25 элементов) определить количество различных чисел.
Все просто.Есть 2 способа.Быстрый с большим расходом памяти и медленный с маленьким.
Медленный без расхода памяти очень прост.Реализуешь одну из сортировок описанных в статье
http://habrahabr.ru/post/204600/.
А затем подсчитываешь количество элементов (проверяя 2 соседних на равенство (если соседние элементы не совпадают увеличиваешь счетчик элементов на 1)) .Быстрый на порядок сложнее и требует 2х памяти по сравнении с медленным.
Спасибо большое за совет, но вот только у меня не получилось реализовать метод пузырька. Посмотрите пожалуйста ошибку
;-------------------------------------------------------------------------------
mas db 44,55,12,42,94,18,06,67 ; задаем массив
N=$-mas ; длина массива mas
X db 0
;-------------------------------------------------------------------------------
.code
;---------------------
; внешний цикл по i
mov cx,n-1
mov si,1
cykl1:
push cx
mov cx,N
sub cx,si
push si
mov si,N-1
cykl2:
mov al,mas[si-1]
cmp mas[si],al
ja m1
mov X,al
mov al,mas[si]
mov mas[si-1],al
mov al,X
mov mas[si],a
m1: dec si
loop cykl2
pop si
inc si
pop cx
loop cykl1
;-------------------------------------------------------------------------------
Заранее спасибо
Добавлено через 48 минут и 33 секунды:Получилось) я исправил метод пузырька. Теперь вроде все работает. Подскажите пожалуйста. Где и как создать счетчик?
вот программа
; multi-segment executable file template.
data segment
mas db 44,55,12,42,94,18,06,67
N=$-mas
X db 0
ends
stack segment dw 128 dup(0)
ends
code segment
start:
mov ax, data
mov ds, ax
mov es, ax
mov cx,n-1
mov si,1
cykl1:
push cx
mov cx,N
sub cx,si
push si
mov si,N-1
cykl2:
mov al,mas[si-1]
cmp mas[si],al
ja m1
mov X,al
mov al,mas[si]
mov mas[si-1],al
mov al,X
mov mas[si],al
m1: dec si
loop cykl2
pop si
inc si
pop cx
loop cykl1
mov ax, 4c00h
int 21h
ends
Добавлено через 5 часов, 17 минут и 11 секунд:Т.е мы должна добавить счетчик псоле метки м1. Но после того как я добавляю счетчик, то ответы не сходятся. Помогите пожалуйста.