배열의 값은 랜덤으로 넣었다.
#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 |