/* * C Program sorts the numbers in ascending order using selection sort (selection_sort.c) */ /* #include #define MAXSIZE 1000 void swap (int *a, int *b) { int temp = *a; *a = *b; *b = temp; } void selection_sort(int list[], int size) { int i, j, min, small, index; for (i = 0; i < size-1; i++) { min = list[i]; index = i; small = list[index]; for (j = i + 1; j < size; j++) { if (small > list[j]) { // select smallest from j to size-1 index = j; // remember its index for late swap small = list[index]; } } if (min > small) { // swap swap(&list[i], &list[index]); // 0 to i sorted } } } int main() { int array[MAXSIZE]; int i, num; printf("enter the number of elements n = "); scanf("%d", &num); printf("enter %d elements one by one\n", num); for (i = 0; i < num; i++) { scanf("%d", &array[i]); } printf("\nthe original array is "); for (i = 0; i < num; i++) { printf("%d ", array[i]); } printf("\n"); selection_sort(array, num); printf("the sorted array is "); for (i = 0; i < num; i++) { printf("%d ", array[i]); } printf("\n"); return 0; } */ .text swap: addiu $sp,$sp,-16 sw $fp,12($sp) move $fp,$sp sw $4,16($fp) sw $5,20($fp) lw $2,16($fp) nop lw $2,0($2) nop sw $2,0($fp) lw $2,20($fp) nop lw $3,0($2) lw $2,16($fp) nop sw $3,0($2) lw $2,20($fp) lw $3,0($fp) nop sw $3,0($2) move $sp,$fp lw $fp,12($sp) addiu $sp,$sp,16 j $31 nop selection_sort: addiu $sp,$sp,-48 sw $31,44($sp) sw $fp,40($sp) move $fp,$sp sw $4,48($fp) sw $5,52($fp) sw $0,16($fp) j $L3 nop $L8: lw $2,16($fp) nop sll $2,$2,2 lw $3,48($fp) nop addu $2,$3,$2 lw $2,0($2) nop sw $2,32($fp) lw $2,16($fp) nop sw $2,28($fp) lw $2,28($fp) nop sll $2,$2,2 lw $3,48($fp) nop addu $2,$3,$2 lw $2,0($2) nop sw $2,24($fp) lw $2,16($fp) nop addiu $2,$2,1 sw $2,20($fp) j $L4 nop $L6: lw $2,20($fp) nop sll $2,$2,2 lw $3,48($fp) nop addu $2,$3,$2 lw $3,0($2) lw $2,24($fp) nop slt $2,$3,$2 beq $2,$0,$L5 nop lw $2,20($fp) nop sw $2,28($fp) lw $2,28($fp) nop sll $2,$2,2 lw $3,48($fp) nop addu $2,$3,$2 lw $2,0($2) nop sw $2,24($fp) $L5: lw $2,20($fp) nop addiu $2,$2,1 sw $2,20($fp) $L4: lw $3,20($fp) lw $2,52($fp) nop slt $2,$3,$2 bne $2,$0,$L6 nop lw $3,32($fp) lw $2,24($fp) nop slt $2,$2,$3 beq $2,$0,$L7 nop lw $2,16($fp) nop sll $2,$2,2 lw $3,48($fp) nop addu $4,$3,$2 lw $2,28($fp) nop sll $2,$2,2 lw $3,48($fp) nop addu $2,$3,$2 move $5,$2 jal swap nop $L7: lw $2,16($fp) nop addiu $2,$2,1 sw $2,16($fp) $L3: lw $2,52($fp) nop addiu $3,$2,-1 lw $2,16($fp) nop slt $2,$2,$3 bne $2,$0,$L8 nop move $sp,$fp lw $31,44($sp) lw $fp,40($sp) addiu $sp,$sp,48 j $31 nop main: addiu $sp,$sp,-4032 sw $31,4028($sp) sw $fp,4024($sp) move $fp,$sp lui $2,%hi($LC0) addiu $4,$2,%lo($LC0) jal printf nop addiu $3,$fp,4020 lui $2,%hi($LC1) addiu $4,$2,%lo($LC1) move $5,$3 jal scanf nop lw $3,4020($fp) lui $2,%hi($LC2) addiu $4,$2,%lo($LC2) move $5,$3 jal printf nop sw $0,16($fp) j $L10 nop $L11: addiu $3,$fp,20 lw $2,16($fp) nop sll $2,$2,2 addu $3,$3,$2 lui $2,%hi($LC1) addiu $4,$2,%lo($LC1) move $5,$3 jal scanf nop lw $2,16($fp) nop addiu $2,$2,1 sw $2,16($fp) $L10: lw $2,4020($fp) lw $3,16($fp) nop slt $2,$3,$2 bne $2,$0,$L11 nop lui $2,%hi($LC3) addiu $4,$2,%lo($LC3) jal printf nop sw $0,16($fp) j $L12 nop $L13: lw $2,16($fp) nop sll $2,$2,2 addiu $3,$fp,16 addu $2,$3,$2 lw $3,4($2) lui $2,%hi($LC4) addiu $4,$2,%lo($LC4) move $5,$3 jal printf nop lw $2,16($fp) nop addiu $2,$2,1 sw $2,16($fp) $L12: lw $2,4020($fp) lw $3,16($fp) nop slt $2,$3,$2 bne $2,$0,$L13 nop li $4,10 jal putchar nop lw $2,4020($fp) addiu $3,$fp,20 move $4,$3 move $5,$2 jal selection_sort nop lui $2,%hi($LC5) addiu $4,$2,%lo($LC5) jal printf nop sw $0,16($fp) j $L14 nop $L15: lw $2,16($fp) nop sll $2,$2,2 addiu $3,$fp,16 addu $2,$3,$2 lw $3,4($2) lui $2,%hi($LC4) addiu $4,$2,%lo($LC4) move $5,$3 jal printf nop lw $2,16($fp) nop addiu $2,$2,1 sw $2,16($fp) $L14: lw $2,4020($fp) lw $3,16($fp) nop slt $2,$3,$2 bne $2,$0,$L15 nop li $4,10 jal putchar nop move $2,$0 move $sp,$fp lw $31,4028($sp) lw $fp,4024($sp) addiu $sp,$sp,4032 j $31 nop .data $LC0: .ascii "enter the number of elements n = \000" $LC1: .ascii "%d\000" $LC2: .ascii "enter %d elements one by one\012\000" $LC3: .ascii "\012the original array is \000" $LC4: .ascii "%d \000" $LC5: .ascii "the sorted array is \000" .end