MIPS按字母顺序排序预先存储的字符串

时间:2017-10-22 23:26:18

标签: mips

我需要帮助按字母顺序对预先存储的字符串进行排序,这是已经给出的代码:

.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   

我认为这样做的方法是获取字母并将其转换为数字,然后以某种方式接收每个单词的第一个字符并对数字进行排序。

然后对数字进行排序并打印与数字相关联的单词。

0 个答案:

没有答案