Как реализовать функцию сортировки (в порядке возрастания) после каждого ввода данных в мипс? - PullRequest
0 голосов
/ 29 марта 2019

Я хочу сортировать целые числа из входных данных каждый раз, когда они даются, вместо сортировки после того, как все целые числа известны.

Я уже пытался реализовать обычные методы сортировки, но они работают только после того, как заданы все целые числа.У меня проблемы с этим после каждого ввода.Ниже приведен код, помогающий разобраться в проблеме.

.data
array:          .space 160 #up to 40 integers max for example
array_size:         .word 160
size:       "Enter the number of signed integers you want to enter: "
prompt:     "Please enter an integer: "

.align 2        #align next data by word

.text
.globl main


main:   # program entry
la $t0, array

la $a0, size        #print out the prompt 
li $v0, 4
syscall

li $v0, 5       #get the input
syscall

move $s1, $v0       #move the input(size) to a saved register ($s1)
sub $s1, $s1, 1     #subtract 1 from size to fit into the array

loop:
slt $t2, $t0, $s1   #if $t0 < $s1 then = 1, else = 0 ; 0 < size
beq $t2, $0, endloop    #if 0, end the loop

la $a0, prompt      #print out the prompt
li $v0, 4
syscall

li $v0, 5       #get the input 
syscall

move $a1, $v0       #move the input to argument register ($a1)


jal SORT        #call the function SORT

j loop
endloop:

li $v0, 10      # terminate the program
syscall

SORT:
lw $t0, 0($t0)      #load address at array[0] (start address at array[0])
sle $v1, $t0, $a1   #$t0 <= $a1; true = 1, fail = 0
beq $v1, $0, swap
beq $v1, 1, loopRight   #if true, you will move to the next

Я уже получил представление о том, как я хочу, чтобы это произошло.Я не уверен, как перевести это на язык ассемблера.При каждом вводе я хочу, чтобы программа сравнивала первую позицию массива и меняла местами, если ее меньше, чем, если нет, она будет перемещаться на следующую позицию массива.Ожидаемый вывод в конце - отсортированный массив в порядке возрастания, но я не могу использовать функцию сортировки после того, как все целые числа перечислены.Моя функция должна быть в цикле вызова для ввода.

...