Knowledge Map

정렬이란? 본문

알고리즘

정렬이란?

2016. 9. 21. 08:22

정렬과 탐색

정렬 (sorting) 이란?

  • 일련의 항목들을 정해진 순서로 배치하여 자료를 좀더 의미 있는 구조로 만든다.
  • 일반적으로 정렬알고리즘은 비교(comparsion) 정렬과 선형 시간(linear time) 정렬로 나뉜다.
    • 비교 정렬 : 정렬하기 위해 각 항목들을 비교하는데 의존한다. O(n log n) 시간 이상 걸린다.
    • 선형 시간 정렬 : O(n) 시간에 정렬하는데서 비롯됨. 자료의 특성에 의존한다.

탐색 (searching) 이란?

  • 자료 집합에서 한 항목의 위치를 알아내는 것
  • 선형 탐색 (linear search) : 집합을 한 끝에서 다른 끝까지 조사
  • 다른 방법들은 테이블, 이진 탐색 트리 같이 탐색을 위해 특별하게 개발된 자료 구조에 의존
  • 인플레이스 (in-place) 정렬 : 정렬이 진행됨에 따라 정렬된 자료를 넣을 메모리와 같은 크기의 메모리만 사용

종류

  • 삽입 정렬

    • 간단하고 인플레이스 정렬이라는 장점이 있다.
    • 최상은 작은 자료 집합에 대한 점증식 정렬이다.
  • 퀵 정렬

    • 일반적인 경우에 최상의 정렬로 여겨지는 인플레이스 정렬 알고리즘이다.
    • 최상은 중간 정도에서도 큰 크기의 자료 집합 정렬이다.
  • 합병 정렬

    • 본질적으로 퀵정렬과 같은 성능을 보이지만 두 배의 기억장소를 필요로 한다.
    • 최상은 아주 커다란 자료 집합을 위한 정렬이다. 정렬되지 않는 집합을 나누는 작업을 용이하게 한다.
  • 카운팅 정렬

    • 가장 큰 값을 알고 있는 정수들에 대해 동작하는 안정된 선형 시간 정렬 알고리즘
  • 기수 정렬

    • 한 숫자씩 항목들을 정렬하는 선형 시간 정렬 알고리즘이다.
    • 정수로 표현 가능한 조각들로 쉽게 쪼갤 수 있는 고정된 크기의 항목들에 잘 맞는다.
  • 이진 탐색

    • 빈번한 삽입이나 삭제가 예상되지 않는 정렬된 자료를 탐색하는데 효과적이다.
    • 자료 집합을 다시 정렬하는 것이 탐색보다 비싸므로 자료가 변하지 않을 때 가장 좋다.

애플리케이션

  • 순서 통계
    • 집합에서 i번째로 작은 원소를 찾는 것이다.
  • 이진 탐색
    • 정렬된 자료에 의존하는 효율적인 탐색 방법이다.
    • 이진 탐색은 기본적으로 반복해서 정렬된 집합을 나누고 각 구획의 중간 항목을 조사함으로써 동작
  • 디렉토리 리스팅
    • 묶음으로 구조화된 파일 시스템에서의 파일 리스팅이다.
    • 일반적으로 운영체제는 디렉토리 리스트를 보여주기 전에 어떤 방법으로 정렬한다.
  • 데이터베이스 시스템
    • 대체로 빠르게 저장되고 검색되어야 하는 많은 양의 자료를 갖는 큰 시스템이다.
    • 데이터베이스에 저장되는 자료의 양은 자료를 탐색하는 효율적이고 유연한 방법을 중요하게 여긴다.
  • 철자 검사기
    • 문서내의 단어 철자를 검사하는 프로그램이다.
    • 수천 단어들을 갖는 문서의 긴 문자열을 다루므로 용인되는 단어 집합을 효율적으로 탐색해야 한다.


'알고리즘' 카테고리의 다른 글

HackerRank - Between Two Sets  (0) 2017.10.22
달팽이  (0) 2017.09.24
2차원 배열의 체크 알고리즘 문제  (0) 2017.09.13
테스트 문제 (1)  (2) 2017.09.06
각 자릿수 합  (0) 2017.09.01
Comments