mips 大概是传说中的选择排序

#********************************************
#         10个数字的输入与排序
#********************************************
#********************************************
.text                            # 代码段
.globl main                      # 程序从此开始

main:
    la $t6,array                 #t6为数组首地址
    move $t7,$zero               #初始化t7,用于循环计数

input:
    li $v0,5
    syscall                      #系统调用 输入数字
  
    move $t0,$t7
    mul $t0,$t0,4
    addu $t1,$t0,$t6
    sw $v0,0($t1)                #将数字存进array[i]
  
    addi $t7,$t7,1               #i++
    blt $t7,10,input             #输入待排序整数,直至达到t8中的给定数目
      
    move $t2,$zero               #外循环计数i
    move $t3,$zero               #内循环计数j

sort:
    bge $t2,10,output            #若循环次数达到10,跳转至输出

    addi $t3,$t2,1               #t3=t2+1
  
inner_loop:
    mul $t1,$t2,4
    addu $t1,$t1,$t6
    lw $t4,0($t1)                #t4=array[i]
    mul $t1,$t3,4
    addu $t1,$t1,$t6
    lw $t5,0($t1)                #t5=array[j]

    bge $t5,$t4,swap             #如果array[j]>=array[i],交换
    addi $t3,$t3,1
    blt $t3,10,inner_loop
    addi $t2,$t2,1
    blt $t2,10,sort

swap:
    mul $t1,$t2,4
    addu $t1,$t1,$t6
    sw $t5,0($t1)
    mul $t1,$t3,4
    addu $t1,$t1,$t6
    sw $t4,0($t1)
    addi $t3,$t3,1
    blt $t3,9,inner_loop
    blt $t2,9,sort
output: 
    move $t7,$zero

print_loop:
    move $t0,$t7
    mul $t0,$t0,4
    addu $t1,$t0,$t6
    lw $a0,0($t1)
    li $v0,1
    syscall
    addi $t7,$t7,1
    la $a0, seperate
    li $v0, 4
    syscall
    blt $t7,10,print_loop
    jr $ra

    li $v0,10
    syscall

.data
  array:
    .space 1024                   #开辟数组空间      
  seperate:
    .asciiz " "


c++如下:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值