본문 바로가기

library

select_sort

/*    선택정렬   */
#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);
}