C언어 알고리즘
<C언어 알고리즘> 팬케이크 정렬
우현짱짱
2020. 4. 9. 00:00
배열의 값은 랜덤으로 넣었다.
#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