yooniiverse
개발 블로그
yooniiverse
전체 방문자
오늘
어제
  • 분류 전체보기
    • 운영체제
    • 네트워크
    • ~2023.02
      • 외부교육
      • 대외활동
      • 스터디
      • 동아리
      • TIL
      • IT지식
      • 기타
      • 트러블 슈팅
      • 프로그래밍
      • Python
      • Java
      • JS
      • DB(SQL)
      • JSP
      • Spring
      • 기술면접
      • 자바
      • 코딩테스트
      • 자료구조
      • 알고리즘
      • 백준 문제풀이
      • 인공지능
      • 머신러닝
      • 프로젝트
      • 안드로이드 앱개발
      • 웹개발
      • 웹 서비스
      • 웹퍼블리싱
      • Node.js 백엔드 개발
      • CS
      • 1일 1CS지식
      • 운영체제
      • 네트워크
      • 데이터베이스
      • 정보처리기사
      • 도서 리뷰
      • 개발 관련 도서
      • 기타 도서

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yooniiverse
~2023.02/알고리즘

[기본 정렬 알고리즘 #2] 삽입 정렬

~2023.02/알고리즘

[기본 정렬 알고리즘 #2] 삽입 정렬

2022. 2. 28. 20:22
📌 기본 정렬 알고리즘

- 버블 정렬
- 삽입 정렬 ✔
- 선택 정렬
- 참고, 공간복잡도

 

1. 삽입 정렬 (insertion sort) 란?


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

https://visualgo.net/en/sorting 

 

Sorting (Bubble, Selection, Insertion, Merge, Quick, Counting, Radix) - VisuAlgo

VisuAlgo is free of charge for Computer Science community on earth. If you like VisuAlgo, the only "payment" that we ask of you is for you to tell the existence of VisuAlgo to other Computer Science students/instructors that you know =) via Facebook/Twitte

visualgo.net

 

 

2. 어떻게 코드로 만들까? (결국 프로그래밍으로 일반화할 수 있도록 만드는 것)


for index in range(데이터길이 - 1):
  for index2 in range(index + 1, 0, -1):
    if data[index2] < data[index2 - 1]:
      swap(data[index2], data[index2 - 1])
    else:
      break

 

 

3. 알고리즘 구현


def insertion_sort(data):
  for index in range(len(data) - 1):
    for index2 in range(index + 1, 0, -1):
      if data[index2] < data[index2 - 1]:
        data[index2], data[index2 - 1] = data[index2 - 1], data[index2]
      else:
        break
  return data

import random

data_list = random.sample(range(100), 50)
print(insertion_sort(data_list))
[0, 2, 4, 7, 9, 10, 12, 13, 14, 16, 17, 19, 21, 22, 23, 28, 33, 34, 35, 39, 40, 42, 50, 52, 55, 57, 58, 59, 60, 61, 64, 67, 70, 71, 74, 75, 76, 78, 79, 81, 84, 86, 87, 89, 90, 92, 95, 97, 98, 99]

 

 

4. 알고리즘 분석


  • 반복문이 두 개 O(n^2)
    • 최악의 경우, n*n(n-1)/2
  • 완전 정렬이 되어 있는 상태라면 최선은 O(n)

 

'~2023.02 > 알고리즘' 카테고리의 다른 글

[기본 정렬 알고리즘 #4] 참고, 공간복잡도  (0) 2022.02.28
[기본 정렬 알고리즘 #3] 선택 정렬  (0) 2022.02.28
[기본 정렬 알고리즘 #1] 버블 정렬  (0) 2022.02.28
최단 경로 알고리즘  (0) 2022.02.28
[탐색 알고리즘 #3] 코딩 테스트 연습문제 풀이  (0) 2022.02.25
  • 1. 삽입 정렬 (insertion sort) 란?
  • 2. 어떻게 코드로 만들까? (결국 프로그래밍으로 일반화할 수 있도록 만드는 것)
  • 3. 알고리즘 구현
  • 4. 알고리즘 분석
'~2023.02/알고리즘' 카테고리의 다른 글
  • [기본 정렬 알고리즘 #4] 참고, 공간복잡도
  • [기본 정렬 알고리즘 #3] 선택 정렬
  • [기본 정렬 알고리즘 #1] 버블 정렬
  • 최단 경로 알고리즘
yooniiverse
yooniiverse
개발 블로그yooniiverse 님의 블로그입니다.

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.