Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 09.07.2016
Сообщений: 74
1

Пузырьковая сортировка (поменять местами рядом стоящие элементы в массиве)

25.08.2016, 17:50. Показов 1123. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всём привет.
Необходимо реализовать пузырьковую сортировку массива. Пишу программу на masm32 через компилятор SASM.
Реализация этого алгоритма на С++:
C++ (Qt)
1
2
3
4
5
6
   for (int i = 0; i < length-1; i++) {
         for (int j = 0; j < length-i-1; j++) {
             if (a[j] > a[j+1]) {
                 int b = a[j]; //change for elements
                 a[j] = a[j+1];
                 a[j+1] = b;
Если с циклом в цикле я более-менее разобрался, то перестановка рядом стоящих элементов поставила меня в тупик. Буду благодарен, если кто-нибудь поможет с перестановкой)
Assembler
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
.386
option casemap: none
include \masm32\include\masm32rt.inc
.data
    arr1 db -20, 14, 7, 16
    arrLen dw $ - arr1 - 1
.code
start:
    mov ecx, 0
    mov eax, 0
    mov ebx, 0
    mov edx, 0
for_i:
    cmp bx, arrLen
    je output
    ;i=ebx j=edx
    mov edx, 0
for_j: 
    mov cx, arrLen
    sub ecx, ebx
    cmp edx, ecx
    je smt
    ;здесь должны быть if и swap, но их нет)
    inc edx
    jmp for_j
smt:
    inc ebx
    jmp for_i    
output:
    ;процедура вывода всех чисел массива на экран уже имеется    
    ret
end start
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2016, 17:50
Ответы с готовыми решениями:

В заданной строке поменять местами рядом стоящие элементы между собой
В заданной строке поменять местами рядом стоящие элементы между собой.

В одномерном массиве А(10) поменять местами элементы стоящие на четных и нечетных местах
В одномерном массиве А(10) поменять местами элементы стоящие на четных и нечетных местах,среди...

В массиве поменять местами соседние элементы, стоящие на нечетных местах со стоящими на четных
уважаемые программисты помогите решить пару детских задач : 1`) Дан массив положительных чисел....

В заданном одномерном массиве поменять местами соседние элементы, стоящие на четных местах
В заданном одномерном массиве поменять местами соседние элементы, стоящие на четных местах, с...

1
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
25.08.2016, 21:59 2
Вот вставка из делфи, под свои нужды легко переделаете.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure Sort(Arr:pointer; Len:integer);
asm
cmp Len,1
jle @exit
mov esi,Arr
dec Len
@m1:xor ecx,ecx
@m2:mov eax,[esi+ecx*4]
    cmp eax,[esi+ecx*4+4]
    jng @next
    xchg eax,[esi+ecx*4+4]
    xchg eax,[esi+ecx*4]
    @next:
    inc ecx
    cmp ecx,Len
    jne @m2
dec Len
jnz @m1
@exit:
end;
0
25.08.2016, 21:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2016, 21:59
Помогаю со студенческими работами здесь

В одномерном массиве поменять местами соседние элементы, стоящие на четных и нечетных местах
В заданном одномерном массиве поменять местами соседние элементы, стоящие на четных местах, с...

В заданном одномерном массиве поменять местами соседние элементы, стоящие на четных местах
I. Дано 2-е число. Определить: 1. Является ли сумма его цифр 2-м числом. 2. Больше ли числа а...

В массиве поменять местами элементы, стоящие на нечетных местах, с элементами, стоящими на четных
Программирование с использованием массивов Цель работы: научиться описывать различные массивы,...

В заданом одномерном массиве поменять местами соседние элементы, стоящие на четных и нечетных местах.
Вообщем, буду благодарен. В заданом одномерном массиве поменять местами соседние элементы,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru