배열의 값은 랜덤으로 넣었다.

#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

+ Recent posts