수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

소스의 문제점과 이동횟수 출력하기 위한 소스를 입력하고 싶습니다.?

지존

2026.02.23

질문 제목 : 소스의 문제점과 이동횟수 출력하기 위한 소스를 어디에 추가해야 하나요?
질문 요약 :여섯가지 정렬들 출력시 아무 것도 뜨지 않는것과 이동횟수를 출력하기 위한 소스
질문 내용 :
밑에 것은 제가 수업시간에 배운 여섯가지 정렬들의 소스들을 끼워 넣어 만든 소스 입니다. 교수님께서 과제로 5만개의 임의의수를 입력시에 걸리는 경과시간과 이동횟수를 출력하시라고 하셨는데요. 어떻게 해야 하나요? 시간까지는 어떻게 했는데 이게 다 적고실행 시킬려고 하니까 출력이 되지 않습니다. 어떻게 된건가요? 그리고 이동횟수를 출력시키기 위해서는 어떤 소스를 입력해야 하나요?
#include stdio.h
#include stdlib.h
#include time.h
#define MAX_SIZE 50000
int list[MAX_SIZE]; /* 최대 배열 크기 */
#define SWAP(x, y, t) ( (t)=(x), (x)=(y), (y)=(t) )//x와 y를 교환
int sorted[MAX_SIZE]; // 추가 공간이 필요
void selection_sort(int list[], int n)
{
int i, j, least, temp;
for(i=0; in-1; i++)
{
least = i;//제일 작은 값을 처음 값으로 설정
for(j=i+1; jn; j++) // 최소값 탐색,바로 옆의 값과 탐색,j는 i다음 수부터 n까지
if(list[j]list[least])
least = j;//j가 least보다 작을 경우 둘을 서로 교환
SWAP(list[i], list[least], temp); //swap 교체,메모리가 필요하기에 temp사용
}
}
void insertion_sort(int list[], int n)//삽입 정렬
{
int i, j, key;
for(i = 1; i n; i++)
{
key = list[i];
for(j = i-1; j = 0 && list[j] key; j--)
list[j+1] = list[j];
list[j+1] = key;
}
} // gap 만큼 떨어진 요소들을 삽입 정렬 // 정렬의 범위는 first에서 last
void inc_insertion_sort(int list[], int first, int last, int gap)
{
int i, j, key;
for(i=first+gap; i=last; i=i+gap)
{
key = list[i];
for(j=i-gap; j=first && keylist[j];j=j-gap)
list[j+gap]=list[j];
list[j+gap]=key;
}
} //
void shell_sort( int list[], int n ) // n = size
{
int i, gap;
for( gap=n/2; gap0; gap = gap/2 )
{
if( (gap%2) == 0 )
gap++;
for(i=0;igap;i++) // 부분 리스트의 개수는 gap
inc_insertion_sort(list, i, n-1, gap);
}
}
void bubble_sort(int list[], int n)
{
int i, j, temp;
for(i=n-1; i0; i--)
{/*i는 개수인데 비교가 끝날시 끝난 값을 하나 제외하고 다시 시작(i는 비교하는 숫자의 갯수) */
for(j=0; ji; j++)/* j는 비교하는 횟수*/
/* 앞뒤의 레코드를 비교한 후 교체 */
if(list[j]list[j+1])
SWAP(list[j], list[j+1], temp);
}
}
void merge(int list[], int left, int mid, int right)
{
int sorted[MAX_SIZE];
int i, j, k, l;
i=left;
j=mid+1;
k=left;
/* 분할 정렬된 list의 합병 */
while(i=mid && j=right)
{
if(list[i]=list[j])
sorted[k++] = list[i++];
else
sorted[k++] = list[j++];
}
if(imid)/* 남아 있는 레코드의 일괄 복사 */
for(l=j; l=right; l++)
sorted[k++] = list[l];
else/* 남아 있는 레코드의 일괄 복사 */
for(l=i; l=mid; l++)
sorted[k++] = list[l];
/* 배열 sorted[]의 리스트를 배열 list[]로 재복사 */
for(l=left; l=right; l++)
list[l] = sorted[l];
}
void merge_sort(int list[], int left, int right)
{
int mid;
if(leftright)
{
mid = (left+right)/2; /* 리스트의 균등 분할 */
merge_sort(list, left, mid); /* 부분 리스트 정렬 */
merge_sort(list, mid+1, right); /* 부분 리스트 정렬 */
merge(list, left, mid, right); /* 합병 */
}
}
int partition(int list[], int left, int right)
{
int pivot, temp;
int low,high;

low = left;
high = right+1;
pivot = list[left];
do {
do
low++;
while(low=right &&t &&list[low]pivot);
do
high--;
while(high=left && list[high]pivot);
if(lowhigh) SWAP(list[low], list[high], temp);
} while(lowhigh);

SWAP(list[left], list[high], temp);
return high;
}
void partition_sort(int list[],int left,int right)
{
if(leftright)
{
int q=partition(list,left,right);
partition_sort(list,left,right);
partition_sort(list,left,q-1);
}
}
void check_time()
{
int i,n=1;
double start1,start2,start3,start4,start5,start6,finish1,finish2,finish3,finish4,finish5,finish6;
while(n7)
{
if(n==1)
start1=clock();
else if(n==2)
start2=clock();
else if(n==3)
start3=clock();
else if(n==4)
start4=clock();
else if(n==5)
start5=clock();
else
start6=clock();
for(i=0; iMAX_SIZE; i++)
{ /* 난수 생성 및 출력 */
list[i] = rand()%MAX_SIZE;/*난수 발생 범위 0~MAX_SIZE*/
}
if(n==1)
bubble_sort(list,MAX_SIZE);
else if(n==2)
selection_sort(list,MAX_SIZE);
else if(n==3)
insertion_sort(list,MAX_SIZE);
else if(n==4)
shell_sort(list,MAX_SIZE);
else if(n==5)
merge_sort(list,0,n-1);
else
partition_sort(list,0,MAX_SIZE);
if(n==1)
finish1=clock();
else if(n==2)
finish2=clock();
else if(n==3)
finish3=clock();
else if(n==4)
finish4=clock();
else if(n==5)
finish5=clock();
else
finish6=clock();
n++;
}
for(i=0; i7; i++)
{
printf(bubble_sort time : %.3f\n,(finish1-start1)/100);
printf(selection_sort time : %.3f\n,(finish2-start2)/100);
printf(insertion_sort time : %.3f\n,(finish3-start3)/100);
printf(shell_sort time : %.3f\n\n,(finish4-start4)/100);
printf(merge_sort time : %.3f\n\n,(finish5-start5)/100);
printf(partition_sort time : %.3f\n\n,(finish6-start6)/100);
}
}
void main()
{
check_time();
return ;
}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

번호 제 목 글쓴이 날짜
2752085 문자열을 랜덤하게 출력해서 대체,삽입,삭제 횟수를 각가 표시하고 그걸 표 형태로 출력 슬아s 2026-10-20
2752056 포인터 && 배열 질문요~ (2) 해찬나래 2026-10-20
2752031 x^n 구하는 코드 짜봤는데 값이 틀려요 ㅠㅠ 세실 2026-10-20
2752000 나 정말 미치겠어요..ㅠㅜ (4) 다이 2026-10-20
2751978 문자열 질문이요.. 초시계 2026-10-19
2751945 숫자 맞추는 프로그램이요 ㅠㅠ (1) 동은 2026-10-19
2751917 C언어 이중 연결 관련 질문합니다. 유우 2026-10-19
2751888 return의 정확한 의미좀 알려주세요 (3) 올해1살 2026-10-19
2751857 포인터 배열 (2) 터큰 2026-10-18
2751831 연산자? 질문입니다 (2) 진주 2026-10-18
2751800 C언어 기초질문입니다.. (3) 핫블랙 2026-10-18
2751739 파일 출력을 구조체로 받을 때, 파일의 끝을 판별하는 방법을 알려주세요. (2) 얼 2026-10-17
2751715 unresolved external symbol 에러... 이룩 2026-10-17
2751686 변수 설정에 관한 질문입니다. 꽃달 2026-10-17
2751655 자료구조 연습문제 한무릎 2026-10-17
2751631 gets 함수 질문이요. (4) 해늘 2026-10-16
2751553 퀵정렬 소스인데 주석좀 달아주세요 (1) 싴흐한세여니 2026-10-16
2751528 저기 이거하는법좀 질문.. (2) 가람슬기 2026-10-15
2751445 도저히 풀 수가 없네요.... (2) 신당 2026-10-15
2751412 어제부터 계속 해도.........안되는.... (1) 족장 2026-10-14
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com