정렬 좀 분석해주세요..

kknd345의 이미지

void number_bubble_sort( int array[], int n)
{
	int temp;
	int move_number=0;
	int compare_number=0;

	while ( n > 0 )
	{
		int bdone = 0;
		int i = 1;

		// 이 1번의 루프로 최대 요소가 오른쪽 끝으로 이동한다.
		while ( i < n )
		{
			if( array[i-1] > array[i])
			{
				temp = array[i-1];
				array[i-1] =array[i];
				array[i] =temp;
				move_number++;
				bdone =1;
			}
			compare_number++;
			i++;
		}

		//불필요하게 돌리지 않는다.
		if ( !bdone)
			break;
		//오른쪽 끝은 완료
	}

	printf("데이터 비교 횟수 : %d ", compare_number);
	printf("이동 횟수 : %d\n\n", move_number);
}

// 배열 요소를 오름차순으로 분류한다.
void number_insertion_sort( int array[], int n)
{
	int insitem, checkitem;
	int temp;
	int move_number=0;
	int compare_number=0;

	//제 2요소에서 끝 요소까지 반복한다.

	for( insitem=1; insitem < n; insitem++)
	{
		for( checkitem=insitem; checkitem >=1 ; checkitem--)
		{
			if( array[checkitem-1] > array[checkitem] )
			{//왼쪽 요소와 교체한다 
				temp = array[checkitem];
				array[checkitem] = array[checkitem-1];
				array[checkitem - 1] = temp;
				move_number++;
			}
			
			compare_number++;
		}
	}
	printf("데이터 비교 횟수 : %d ", compare_number);
	printf("이동 횟수 : %d\n\n", move_number);
}

void number_select_sort( int array[], int n)
{
	int i,j;
	int temp;
	int move_number=0;
	int compare_number=0;

	for( i=0;i<n;i++)
	{
		for( j=i+1; j<n;j++)
		{
			if( array[i] > array[j])
			{
				temp=array[i];
				array[i]=array[j];
				array[j]=temp;
				move_number++;
			}
			compare_number++;
		}
	}

	printf("데이터 비교 횟수 : %d ", compare_number);
	printf("이동 횟수 : %d\n\n", move_number);

}

제가 삽입정렬, 버블 정렬, 선택 정렬 제대로 구현한거 맞나요?

학교에서 이것들의 휴리스틱을 분석 해라는데 멀 적어야 하나요?

그리고 신기한것이 버블이랑 삽입의 이동횟수가 같고요

삽입이랑 선택정렬 데이터 비교횟수가 같게 나오는데
원래 그런건가요? 아님 제가 구현을 잘못 해서 그런건가요?

File attachments: 
첨부파일 크기
Package icon Sort_win32api.zip24.12 KB
ssehoony의 이미지

제가 만들었던 sort 프로그램에서는

bubble 하고 selection 하고 비교횟수가 같고,
bubble 하고 insertion 하고 swap 횟수가 같네요.

댓글 첨부 파일: 
첨부파일 크기
Package icon 0바이트
kknd345의 이미지

아 제가 실수를 했네요.

제가 선택정렬이라고 생각했던 알고리즘이 삽입 정렬과 똑같네요.
for와 while 의 차이로 눈치를 못챘네요..

선택 정렬은 어떻게 구현하나요?

1%의 가능성이면 충분하다!
최선을 다하자!

kknd345의 이미지

버블 소트가 앞쪽에 작은 것을 모으는 것과

뒤쪽에 큰 것을 모으는 두 가지 방법으로 나뉘잖아요

혹시 앞쪽에 작은 것을 모으는 것이 선택정렬인가요????

1%의 가능성이면 충분하다!
최선을 다하자!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.