![]() ![]() |
![]() ![]() |
; Systemnahe Informatik 2004 Uebung 5 Aufgabe 1 ; Bubble Sort .data Feldbeginn: .word 7 .word 4 .word 6 .word 2 .word 8 .word 5 .word 9 .word 1 .word 10 .word 3 Feldende: .space 4 ; // In C++ schaut Bubble sort so aus: ; #include < iostream > ; ; using namespace std; ; ; int ; f[10]={7,4,6,2,8,5,9,1,10,3}, ; *Feldbeginn=f, ; *Feldende=Feldbeginn+10; ; ; void main() ; { ; int n=Feldende-Feldbeginn-1; ; for (int i=0; i < n; i++) //> ; { int *a=Feldbeginn, ; *b=a+1; ; for (int j=0; j < n-i; j++) //> ; { if (*b < *a) // compare the two neighbors > ; { int tmp = *a; // swap *a and *b ; *a = *b; ; *b = tmp; ; } ; a++; ; b++; ; } ; for (j=0; j < n+1; j++) ; cout << f[j] << " "; // >>>> ; cout << endl; ; } ; } .text addi r1,r0,Feldende subi r1,r1,Feldbeginn srl r1,r1,2 ; die ptr müssen zuerst ; durch 4 dividiert werden subi r1,r1,1 ; r1=n add r2,r0,r0 ; r2=i=0 for_i: slt r3,r2,r1 ; r3=(i < n) //> beqz r3,end_i addi r3,r0,Feldbeginn ; r3=a=Feldbeginn addi r4,r3,4 ; r4=b=a+1 add r5,r0,r0 ; r5=j=0 for_j: sub r6,r1,r2 ; r6=n-i slt r6,r5,r6 ; r6=(j < n-i) //> beqz r6,end_j lw r6,(r3) ; r6=*a lw r7,(r4) ; r7=*b slt r8,r7,r6 ; r8=(*b < *a) //> beqz r8,if_end sw (r3),r7 ; *a=r7 (swap *a und *b) sw (r4),r6 ; *b=r6 if_end: addi r3,r3,4 ; a++ addi r4,r4,4 ; b++ addi r5,r5,1 ; j++ j for_j end_j: addi r2,r2,1 ; i++ j for_i end_i: trap 0 |
![]() ![]() |
![]() ![]() |