#include <stdio.h>
#define N 5
void selection_sort(int *a, int n);
int *find_largest(int *a, int n);
void swap(int *p, int *q);
int main(void){
int i;
int a[N];
printf("Enter %d numbers to be sorted: ", N
); for (i = 0; i < N; i++)
selection_sort(a, N);
for (i = 0; i < N; i++)
return 0;
}
void selection_sort(int *a, int n){
int i = 0;
int *largest;
for(i = 0; i < n-1; i++){
largest = find_largest(a, n-i);
swap(largest, a+(n-1-i));
}
}
int *find_largest(int *a, int n){
int *p = a;
int *largest = p;
for(++p; p < a+n; p++){
if(*p > *largest){
largest = p;
}
}
return largest;
}
void swap(int *p, int *q){
int temp = *p;
*p = *q;
*q = temp;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIE4gNQkJCQkJCQkgCgp2b2lkIHNlbGVjdGlvbl9zb3J0KGludCAqYSwgaW50IG4pOwppbnQgKmZpbmRfbGFyZ2VzdChpbnQgKmEsIGludCBuKTsKdm9pZCBzd2FwKGludCAqcCwgaW50ICpxKTsKCmludCBtYWluKHZvaWQpewoJaW50IGk7CglpbnQgYVtOXTsKCQoJcHJpbnRmKCJFbnRlciAlZCBudW1iZXJzIHRvIGJlIHNvcnRlZDogIiwgTik7Cglmb3IgKGkgPSAwOyBpIDwgTjsgaSsrKQoJCXNjYW5mKCIlZCIsIGEraSk7CgkKCXNlbGVjdGlvbl9zb3J0KGEsIE4pOwoJCglwcmludGYoIkluIHNvcnRlZCBvcmRlcjoiKTsKCWZvciAoaSA9IDA7IGkgPCBOOyBpKyspCgkJcHJpbnRmKCIgJWQiLCAqKGEraSkpOwoJcHJpbnRmKCJcbiIpOwoKCXJldHVybiAwOwp9Cgp2b2lkIHNlbGVjdGlvbl9zb3J0KGludCAqYSwgaW50IG4pewoJaW50IGkgPSAwOwoJaW50ICpsYXJnZXN0OwoKCWZvcihpID0gMDsgaSA8IG4tMTsgaSsrKXsKCQlsYXJnZXN0ID0gZmluZF9sYXJnZXN0KGEsIG4taSk7CgkJc3dhcChsYXJnZXN0LCBhKyhuLTEtaSkpOwoJfQp9CgppbnQgKmZpbmRfbGFyZ2VzdChpbnQgKmEsIGludCBuKXsKCWludCAqcCA9IGE7CglpbnQgKmxhcmdlc3QgPSBwOwoJZm9yKCsrcDsgcCA8IGErbjsgcCsrKXsKCQlpZigqcCA+ICpsYXJnZXN0KXsKCQkJbGFyZ2VzdCA9IHA7CgkJfQoJfQoJcmV0dXJuIGxhcmdlc3Q7Cn0KCnZvaWQgc3dhcChpbnQgKnAsIGludCAqcSl7CglpbnQgdGVtcCA9ICpwOwoJKnAgPSAqcTsKCSpxID0gdGVtcDsKfQ==