e.den
eden.dev.log
e.den
전체 방문자
오늘
어제
  • 분류 전체보기 (57)
    • 슬기로운 취준 생활 (1)
    • Study (30)
      • Swift (7)
      • iOS (6)
      • Java (2)
      • Spring (6)
      • Algorithm (9)
    • Coding Test (8)
      • Swea (0)
      • Baekjoon (8)
      • Programmers (0)
    • 삽질기 (3)
    • 독서록 (15)
      • Clean Architecture (5)
      • Clean Code (10)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Filter
  • flatmap
  • MySQL
  • Map
  • UITextView
  • lombok
  • initializer
  • swift
  • 클린코드
  • CGLayer
  • mybatis
  • 자료구조
  • 프로퍼티
  • lifecycle
  • 클린아키텍처
  • compactMap
  • 알고리즘
  • java
  • Spring
  • RunLoop
  • 고차함수
  • CoreAnimation
  • reduce
  • 정렬
  • ios
  • 부스트코스
  • Algorithm
  • property
  • cleancode
  • CleanArchitecture

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
e.den

eden.dev.log

[정렬] 삽입 정렬(Insertion Sort)
Study/Algorithm

[정렬] 삽입 정렬(Insertion Sort)

2020. 4. 13. 02:58

- 이미 정렬되어 있는 배열이 있다고 보고 한 원소를 그 배열에 삽입한다.

  (배열의 정렬 순서를 유지하도록 적절한 위치에 삽입)

- 이러한 작업을 반복한다.

 

 

다음은 삽입 정렬의 알고리즘이다.

insertionSort(A[], n){
    for i←2 to n{ // 1
        loc ← i-1;
        newItem ← A[i];
        // 이 지점에서 A[1...i-1]은 이미 정렬되어 있는 상태
        while (loc >= 1 and newItem < A[loc]) { // 2
            A[loc+1] ← A[loc];
            loc--;
        }
        A[loc+1] ← newItem;
    }
}

- 1의 for 루프는 n-1번 반복한다.

- 2의 최악의 경우는 i-1회 비교, 최선의 경우엔 1번 비교한다.

 

따라서,

최악의 경우 T(n) = (n-1) + (n-2) + … + 2 + 1 = n(n-1)/2 = O(n^2)

시간 복잡도는 O(n^2)이 된다.

'Study > Algorithm' 카테고리의 다른 글

[정렬] 힙 정렬(Heap Sort)  (3) 2020.04.14
[정렬] 퀵 정렬(Quick Sort)  (3) 2020.04.13
[정렬] 병합 정렬(Merge Sort)  (3) 2020.04.13
[정렬] 버블 정렬(Bubble Sort)  (3) 2020.04.13
[정렬] 선택 정렬(Selection Sort)  (3) 2020.04.13
    'Study/Algorithm' 카테고리의 다른 글
    • [정렬] 퀵 정렬(Quick Sort)
    • [정렬] 병합 정렬(Merge Sort)
    • [정렬] 버블 정렬(Bubble Sort)
    • [정렬] 선택 정렬(Selection Sort)
    e.den
    e.den
    문제를 본질적으로 접근하자

    티스토리툴바