뭐든지시작이반이다
Dream Future
뭐든지시작이반이다
  • 분류 전체보기
    • Spring
      • 개념
      • 기타
    • Java
    • Algorithm
      • 알고리즘 정리
    • DB
      • Postgresql
    • 트러블슈팅
    • Git & Github
    • V&V
    • EFK
    • 북스터디
    • 기타

인기 글

최근 댓글

전체 방문자
오늘
어제

블로그 메뉴

  • 홈
  • 태그
  • 방명록

태그

  • ambiguous오류
  • 대규모서비스
  • fluentd
  • git
  • springbot
  • Hibernate
  • SqlSessionFactory
  • spring
  • requestmapping
  • multimodule
  • springboot
  • gitignore
  • SelectionSort
  • docker
  • Kibana
  • lombok
  • mybatis
  • 알고리즘
  • 파티셔닝
  • github
  • dirtyChecking
  • JPA
  • 트러블슈팅
  • gradle
  • sqlSessionTemplate
  • spring-boot
  • auditing
  • Kotlin
  • efk
  • Controller
hELLO · Designed By 정상우.
뭐든지시작이반이다

Dream Future

Algorithm/알고리즘 정리

insertion sort 이해해보기

2020. 7. 13. 17:01

아래는 insertion sort의 코드이다

 

1
2
3
4
5
6
7
8
9
10
#insertion sort
def insertion_sort(a):
    n = len(a)
    for i in range(1, n):
        key = a[i]
        j = i - 1
        while j >= 0 and a[j] > key: # key가 더 작으면 앞으로
            a[j + 1] = a[j]
            j -= 1
        a[j + 1] = key
cs

 

selection sort가 어떤 위치에 들어갈 value를 뒤의 것들을 쭉 훑은 뒤에 '뽑아서' 가져오는 것이라고 한다면

insertion sort는 어떤 위치의 것을 그 앞 어디에 '넣을' 것인지 정하는 것이다.

위치를 정해야하는 value의 위치 i. value를 key에 저장하고 앞의 값들(위치 j)과 비교한다.

자신보다 더 큰 값을 마주한 경우, 그 값을 뒤로 한칸 미룬다(복사).

이를 자신보다 (같거나 더 작은 값)을 만나거나 또는 (j가 -1) 이 될 때까지 반복한다.

그리고 마지막 비교위치 j의 오른쪽에 key값을 저장한다. (-1인 경우 맨 앞, 그 외의 경우 자기보다 작은 값 오른쪽)

0번 위치의 경우 나머지들이 정렬이되면 자동으로 정렬되는 위치이다.(selection에서의 마지막위치 같다고 보면 됌.)

 

 

저작자표시 비영리 동일조건 (새창열림)

'Algorithm > 알고리즘 정리' 카테고리의 다른 글

binary search  (0) 2020.07.17
bubble sort(optimized)  (0) 2020.07.16
quick sort (기본: 맨 끝을 pivot으로)  (0) 2020.07.16
merge sort  (0) 2020.07.13
selection sort  (0) 2020.07.13
    'Algorithm/알고리즘 정리' 카테고리의 다른 글
    • bubble sort(optimized)
    • quick sort (기본: 맨 끝을 pivot으로)
    • merge sort
    • selection sort
    뭐든지시작이반이다
    뭐든지시작이반이다
    기록장입니다.

    티스토리툴바