배열의 값은 랜덤으로 넣고 재귀함수를 이용했다.

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int find_min(int *arr,int min,int minValue,int start,int end)
{
	return start==end-1?(minValue<arr[start]?min:start):find_min(arr,minValue<arr[start]?min:start,minValue<arr[start]?minValue:arr[start],start+1,end);
}

void selection_sort(int *arr,int start,int end)
{
	int min, temp;

	if(start<end-1)
	{
		min=find_min(arr,start,arr[start],start,end);

		temp=arr[min];
		arr[min]=arr[start];
		arr[start]=temp;

		selection_sort(arr,start+1,end);
	}
}

int main(void)
{
	int *array=NULL, count, i;
	srand((unsigned)time(NULL));

	scanf("%d", &count);
	array=(int *)malloc(count*sizeof(int));

	printf("초기 배열:\n");
	for(i=0;i<count;i++)
	{
		array[i]=rand()%100;
		printf("%2d ", array[i]);
	}
	printf("\n");

	selection_sort(array,0,count);
	printf("정렬 후:\n");
	for(i=0;i<count;i++)
		printf("%2d ", array[i]);
	printf("\n");

	free(array);
	return 0;
}
728x90

+ Recent posts