배열의 값은 랜덤으로 넣고 재귀함수를 이용했다.
#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
'C언어 알고리즘' 카테고리의 다른 글
<C언어 알고리즘> 배열의 인덱스와 값이 일치하는 경우 찾기 (0) | 2020.04.10 |
---|---|
<C언어 알고리즘> 정렬 후 회전된 배열 (0) | 2020.04.10 |
<C언어 알고리즘> 반복문을 사용하지 않고 합계 구하기 (0) | 2020.04.09 |
<C언어 알고리즘> 팬케이크 정렬 (0) | 2020.04.09 |
<C언어 알고리즘> 반복문을 사용하지 않고 최솟값 구하기 (0) | 2020.04.09 |