본문 바로가기

공부/자료구조 | 알고리즘

[알고리즘] 정렬 / 정렬 프로그램 완성

반응형
정렬
  • 내부정렬
    • 주기억장치내 저장된 소규모 자료 대상
    • 삽입정렬, 선택정렬버블정렬, 쉘정렬, 퀵정렬, 2원합병정렬, 히프정렬, 기수정렬 등
  • 외부정렬
    • 테이프 등에 저장된 대규모 자료 대상
    • 자연2원합병, 균형2원합병, 균형m원합병, 다단계합병 등

 

내부정렬 
  • 입력 자료 
  • 입력 데이터는 대부분 배열에 저장
    일부는 연결리스트 사용
  • A[1],A[2],...,A[n]을 입력으로 봄
    간혹, 경우에 따라 A[0]를 포함하기도 함  ( C 언어의 경우, A[0]부터 시작 )

 

정렬 프로그램 완성
void sort()
{
    /* 이 곳에 알맞은 내용을 추가하시오. */
    /* 입력 데이타는 L[]에 들어 있으면, 전체 원소 개수는 SIZE이다. */
}
#include <iostream>
using namespace std;

const int SIZE = 15;
int L[SIZE] = { 10, 4, 7, 1, -2, 12, 28, 66, 9, 3, 5, 7, 6, 21, 11 };


void print_data()
{
	for(int i = 0; i < SIZE; i++)
		cout << " " << L[i] << " ";
	cout << endl;
}

void sort()
{
	// ?
}

void main()
{
	cout << "Input Data : ";
	print_data();
	
	/* sort the elements of array L[] in ascending order */
	sort();
	
	cout << "\n\nSorted Data : ";
	print_data();

}

 

#include <iostream>
using namespace std;

const int SIZE = 15;
int L[SIZE] = { 10, 4, 7, 1, -2, 12, 28, 66, 9, 3, 5, 7, 6, 21, 11 };
int temp;

void print_data()
{
	for(int i = 0; i < SIZE; i++)
		cout << " " << L[i] << " ";
	cout << endl;
}

void sort()
{
	for (int i = 0; i < SIZE - 1; i++) 
	{
		for (int j = 0; j < SIZE - 1 - i; j++) 
		{
			if (L[j] > L[j + 1]) 
			{
				temp = L[j];
				L[j] = L[j + 1];
				L[j + 1] = temp;
			}
		}
	}

}

void main()
{
	cout << "Input Data : ";
	print_data();
	
	sort();

	cout << "\n\nSorted Data : ";
	print_data();
}
반응형