게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
삽입정렬과 쉘정렬에서 비교횟수와 이동횟수를 어떻게 구해야할지..도와주십쇼
게시물ID : programmer_20210짧은주소 복사하기
작성자 : 푸푸좋아요
추천 : 0
조회수 : 532회
댓글수 : 4개
등록시간 : 2017/04/05 22:13:54
옵션
  • 본인삭제금지
void insertion_sort(int list[], int n)
{
int i, j;
int 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; 
}
}
---

위 삽입정렬 코드에 
count_comp = 0, count_move = 0;
비교횟수와 이동횟수를 카운트하는걸 넣으려고 하는데 진짜 이거 어디에 넣어야할지 감이 안오네요 해봐도 틀린거같고...

일단 비교횟수는 주석달아놓은것처럼 for문쪽에 다는거같기도 한데 하 미치겠네요 혹시 고수님들잇으면 조언좀 부탁드립니다.



아래 쉘정렬도 마찬가진데 이것도 어디다가 카운터를 넣어야 제대로 너무 헷갈리네요

----
//gap만큼 떨어진 요소들을 삽입정렬
//정렬의 범위는 first~last

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 && key<list[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; gap>0; gap = gap/2 ) {
if( (gap%2) == 0 ) gap++;
for(i=0;i<gap;i++) // 부분 리스트의 개수는 gap
inc_insertion_sort(list, i, n-1, gap);
}
}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호