배열의 값은 랜덤으로 넣었다.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void reverse(int *arr,int k,int size)
{
int i, temp;
for(i=0;i<k/2;i++)
{
temp=arr[i];
arr[i]=arr[k-i-1];
arr[k-i-1]=temp;
}
printf("reversed: ");
for(i=0;i<size;i++)
printf("%d ", arr[i]);
printf("\n");
}
void pancake_sort(int *arr,int count,int size)
{
int i=0, j, flag;
if(count>0)
{
while(arr[i]!=count)
i++;
reverse(arr,i+1,size);
reverse(arr,count,size);
flag=1;
for(j=1;j<size;j++)
if(arr[j-1]>arr[j])
{
flag=0;
break;
}
if(flag)
return;
pancake_sort(arr,count-1,size);
}
}
int main(void)
{
int *array=NULL, count, i, j, flag;
srand((unsigned)time(NULL));
scanf("%d", &count);
array=(int *)malloc(count*sizeof(int));
printf("초기 배열:\n");
for(i=0;i<count;i++)
{
do
{
flag=0;
array[i]=rand()%count+1;
for(j=0;j<i;j++)
if(array[i]==array[j])
{
flag=1;
break;
}
}
while(flag==1);
printf("%d ", array[i]);
}
printf("\n");
pancake_sort(array,count,count);
printf("정렬 후:\n");
for(i=0;i<count;i++)
printf("%d ", 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 |