C언어 알고리즘
<C언어 알고리즘> 반복문을 사용하지 않고 선택정렬
우현짱짱
2020. 4. 9. 00:00
배열의 값은 랜덤으로 넣고 재귀함수를 이용했다.
#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