[ALGORITHM] 정렬

2021. 9. 26. 21:31·ALGORITHM & DATA STRUCTURE
728x90

정렬

  • 어떤 데이터들이 주어졌을 때 이를 정해진 순서대로 나열하는 것
  • 정렬은 프로그램 작성시 빈번하게 필요
  • 다양한 알고리즘이 고안되었으며, 알고리즘 학습의 필수 

버블정렬 (Bubble sort)

https://en.wikipedia.org/wiki/Bubble_sort

  • 두 인접한 데이터를 비교해서, 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾸는 정렬 알고리즘

선택정렬 (Selection sort)

https://en.wikipedia.org/wiki/Merge_sort

  • 주어진 데이터 중, 최소값을 찾은뒤 해당 최소값을 데이터 맨 앞에 위치한 값과 교체함, 맨 앞의 위치를 뺀 나머지 데이터를 동일한 방법으로 반복하는 정렬 알고리즘

삽입정렬 (Insertion sort)

https://en.wikipedia.org/wiki/Insertion_sort

  • 두번째 인덱스부터 시작하여, 해당 인덱스 앞에 있는 데이터(B) 부터 비교해서 key 값이 더 작으면, B값을 뒤 인덱스를 복사함, 이를 key 값이 더 큰 데이터를 만날때까지 반복, 그리고 큰 데이터를 만난 위치 바로 뒤에 key 값을 이동

병합정렬 (Merge sort)

https://en.wikipedia.org/wiki/Merge_sort

  • 재귀용법을 활용한 정렬 알고리즘
  • 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈 뒤 각 부분 리스트를 재귀적으로 합병하여 정렬을 반복하여 다시 하나의 정렬 리스트로 만듬

퀵정렬 (Quick sort)

https://en.wikipedia.org/wiki/Quicksort

  • 기준점 (Pivot)을 정해서, 기준점보다 작은 데이터는 왼쪽, 큰 데이터는 오른쪽으로 모으는 것을 반복하여 정렬
  • 왼쪽 + 기준점 + 오른쪽

자바 정렬 함수

  Primitive 원소 정렬 Object 원소 정렬
정렬방식 Dual-Pivot Quick Sort Tim Sort (선택정렬 / 합병정렬 합침)
최선 시간복잡도 O(N) O(N)
최악 시간복잡도 O(N2) O(NlogN)
평균 시간복잡도 O(NlogN) O(NlogN)
  • 자바 Arrays.sort 함수는 Primitive 타입 정렬할때랑 Object 정렬할때 사용하는 정렬 알고리즘이 다름

 

저작자표시

'ALGORITHM & DATA STRUCTURE' 카테고리의 다른 글

[DATA STRUCTURE] RED BLACK TREE  (0) 2022.01.01
[DATA STRUCTURE] 트리  (0) 2021.11.08
[ALGORITHM] 다익스트라 알고리즘  (0) 2021.09.23
[ALGORITHM] 순차탐색 / 이진탐색  (0) 2021.09.21
[ALGORITHM] 재귀 호출  (0) 2021.09.20
'ALGORITHM & DATA STRUCTURE' 카테고리의 다른 글
  • [DATA STRUCTURE] RED BLACK TREE
  • [DATA STRUCTURE] 트리
  • [ALGORITHM] 다익스트라 알고리즘
  • [ALGORITHM] 순차탐색 / 이진탐색
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    ElasticSearch
    자바
    java
    IntelliJ
    프로그래머스
    splunk
    JPA
    엘라스틱서치
    SQL
    Kafka
    코틀린
    Elk
    docker
    go
    Spring
    cleancode
    이펙티브코틀린
    AWS
    클린코드
    이펙티브 코틀린
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[ALGORITHM] 정렬
상단으로

티스토리툴바