/* 선택정렬 */ #include<stdio.h> void select_sort(int a[], int n); void select_sort_(void *base, size_t nelem, size_t width, int (*fcmp)(const void*, const void*)); int main() { int b[10], i; for(i=0; i<10; i++) scanf("%d", &b[i]); putchar('\n'); for(i=0; i<10; i++) printf("%c", b[i]); return 0; } void select_sort(int a[], int n) { int min, temp, i, j; for(i=0; i<n-1; i++) { min = i; for(j = i+1; j<n; j++) { if(a[j] < a[min]) min = j; } temp = a[i]; a[i] = a[min]; a[min] = temp; } } void select_sort_(void *base, size_t nelem, size_t width, int (*fcmp)(const void*, const void*)) { void *min; int minidex; int i, j; min = malloc(width); /* min에 공간할당 */ for(i = 0; i<nelem -1; nelem++) { min = i; for(j = i; j<nelem; j++) { if(fcmp(min, (char*)base + j*width) > 0 ) min = j; } memcpy(min, (char*)base + j*width, width); memcpy((char*)base + minidex* width, (char *)base + i*width, width); memcpy((char*)base + i*width, min, width); } free(min); }
library