ID_DI
DI's study notes
ID_DI
전체 방문자
오늘
어제
  • 분류 전체보기 (85)
    • Deep-Learning (3)
      • CNN (2)
      • NLP (1)
    • Data_Python (6)
      • Numpy (0)
      • Matplotlib (4)
    • Python (8)
      • Python Algorithm (6)
    • Java (36)
      • Java(base) (33)
      • Java practice(base) (2)
    • Git (12)
    • Algorithm (7)
    • etc (7)
    • linux (1)
    • DeskSetup (0)
    • TIL_모각코 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 알고리즘
  • Python
  • 파이썬
  • 커밋
  • java
  • README.md
  • matplotlib
  • binarySearch
  • java.lang
  • git
  • java base
  • Github
  • staged
  • string to int
  • java.net
  • 자바
  • git add.
  • 정렬
  • 합병정렬
  • java 기초

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ID_DI

DI's study notes

[알고리즘] insertionSort 삽입정렬(pseudo-code, 파이썬, Java)
카테고리 없음

[알고리즘] insertionSort 삽입정렬(pseudo-code, 파이썬, Java)

2021. 10. 15. 01:13

삽입정렬

  • 삽입 정렬은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 정렬 방법이다.
  • 현재 타겟이 되는 숫자와 이전 위치에 있는 원소들을 비교한다. (첫 번째 타겟은 두 번째 원소부터 시작한다.) 타겟이 되는 숫자가 이전 위치에 있던 원소보다 작다면 위치를 서로 교환한다. 그 다음 타겟을 찾아 위와 같은 방법으로 반복한다.
  1. 배열을 0인덱스부터 i-1번째가 정렬되어 있을 때 for문을 돌아서 a[i]의 값보다 크다면 인덱스를 한칸씩 뒤로 이동해준다
  2. 만약에 a[i]의 값보다 작거나 같다면 배열의 j+1번째 인덱스에 a[i]값을 넣어준다.
  3. 이때 a[i]값은 미리 변수에 저장을 해둔다.

Pseudo-code

Algorithm insertionSort(a, n)
   for i = 1 to n
       temp = a[i]
       for  j = i-1 downto 0  
           if (a[j]> temp) then
              a[j+1] = a[j] //temp 값이 앞원소보다 작으므로 뒤로 민다
           else
              break
     // for loop을 끝까지 수행한 경우에 앞의 원소가 temp 보다 작다는 의미이므로 
     // temp 는 j+1 에 위치해야한다.
       a[j+1] = temp

Python

def insertion_sort(arr):
    for i in range(1,n):

Java

public class Insertion{
    public void sort(int[] arr){
        for(int i = 1; i < arr.length; i++){
            temp = arr[i];
            for(int j = i-1; j >= 0; j--){
                if(arr[j] >  temp){
                    arr[j+1] = a[j]; //앞자리 값이 key값보다 크다면 하나씩 이동
                }else{
                    break;
                }
            }
            arr[j+1] = temp //앞 원소가 temp 보다 작다는 의미이므로 비어있는 자리에 삽입
        }
    }
}

수행시간분석

  • 최악의 경우

    • W(n): O(n^2) -> 역순으로 정렬되어있을 때

    • T(n) = 1 + 2 + 3 + … + n-1

      n = (n-1)(n)/2 -> O(n^2)

  • 최선의 경우

    • B(n) : O(n) -> 정렬되어 있는 입력

평균적인 시간 복잡도 -> Θ(n^2)

    ID_DI
    ID_DI
    Computer Vision

    티스토리툴바