我需要帮助按字母顺序对预先存储的字符串进行排序,这是已经给出的代码:
.data
String1:
.asciiz "Applebee"
String2:
.asciiz "subway"
String3:
.asciiz "Fire House"
String4:
.asciiz "Red Lobster"
String5:
.asciiz "Moe's"
我能够对此进行硬编码,以便获得我想要的结果,但我想知道如何使用算法进行操作,以便用户可以输入他们想要的任何名称,程序将根据第一个字母对它们进行排序每一个。
我添加了一些代码,以便我可以转到下一行,并说明之前和之后:
before:
.asciiz "Here are the words given:"
after:
.asciiz "Here are the words sorted:"
newLine:
.asciiz "\n"
现在我已经对整个事情进行了硬编码:
.text
.globl main
main:
li $v0,4 #"Here are the words:"
la $a0,before
syscall
li $v0,4
la $a0,newLine
syscall
#-----------------------
#words
li $v0,4
la $a0,String1
syscall
li $v0,4
la $a0,newLine
syscall
li $v0,4
la $a0,String2
syscall
li $v0,4
la $a0,newLine
syscall
li $v0,4
la $a0,String3
syscall
li $v0,4
la $a0,newLine
syscall
li $v0,4
la $a0,String4
syscall
li $v0,4
la $a0,newLine
syscall
li $v0,4
la $a0,String5
syscall
li $v0,4
la $a0,newLine
syscall
#-----------------------
li $v0,4 #"Here are the words sorted:"
la $a0,after
syscall
li $v0,4
la $a0,newLine
syscall
#-----------------------
#sorted words
li $v0,4
la $a0,String1
syscall
li $v0,4
la $a0,newLine
syscall
li $v0,4
la $a0,String3
syscall
li $v0,4
la $a0,newLine
syscall
li $v0,4
la $a0,String5
syscall
li $v0,4
la $a0,newLine
syscall
li $v0,4
la $a0,String4
syscall
li $v0,4
la $a0,newLine
syscall
li $v0,4
la $a0,String2
syscall
#-----------------------
la $v0, 10 #exit program
syscall
我认为这样做的方法是获取字母并将其转换为数字,然后以某种方式接收每个单词的第一个字符并对数字进行排序。
然后对数字进行排序并打印与数字相关联的单词。