💡 Goal - 삽입정렬 알고리즘을 이해한다. - 삽입정렬 알고리즘을 파이썬으로 구현한다. - 삽입정렬 알고리즘 특징을 2가지 이상 말하기. 개념 데이터를 앞에서 하나씩 확인 후 특정 조건에 부합하는 위치(좌 or 우)에 삽입 왼쪽은 이미 정렬되어 있는 가정으로 접근 선택정렬에 비해 실행시간 측면으로 조금 효율적 처음 key값은 두번째(index 1)부터 시작 비교, 시프트(이동), 삽입등이 사용되는 알고리즘 순서(오름차순 기준) 1번 인덱스부터 시작하는 반복문을 만든다. 임시로 1번 인덱스값과 데이터를 가지고 ← 방향으로 반복 비교한다. 왼쪽은 이미 정렬되어 있다는 가정 왼쪽 값이 크다면 큰 값을 현재 position으로 변경해주고 position을 -1 해준다. (왼쪽 순회) 2,3단계가 끝나면 현재..
💡 Goal - 선택정렬 알고리즘을 이해하기. - 선택정렬 알고리즘을 파이썬으로 구현하기. - 선택정렬 알고리즘 특징을 2가지 이상 말하기. 개념 가장 작은 값을 찾아 맨 왼쪽(앞) index로 위치 변경 0번 index, 1번 index 반복 매번 가장 작은 데이터를 선택하여 정렬 각 위치에 어떤 값이 들어갈지 찾는 정렬 비교와 교환으로 이루어진 알고리즘 순서(오름차순 기준) 주어진 데이터의 →(왼쪽에서 오른쪽) 방향으로 확인한다. 임시로 0번 인덱스를 최소값으로 지정한다. 한칸씩 오른쪽으로 이동하며 비교한다. 길이의 끝까지 돌면서 임시로 지정한 값보다 값이 더 작으면 해당 데이터의 index를 최소 index로 변경한다. 반복이 끝난 후 구해진 최소값 index를 가지고 임시로 지정한 변수와 swap..
💡 Goal - 버블정렬 알고리즘을 이해하기. - 버블정렬 알고리즘을 파이썬으로 구현하기. - 버블정렬 알고리즘 특징을 2가지 이상 말하기. 개념 서로 인접한(연속된) 두 원소를 확인해 정렬하는 알고리즘 인접한 2개의 원소를 확인하여 조건에 맞는 순서로 교환 비교와 교환으로 이루어진 알고리즘 순서(오름차순 기준) 연속된 두 항목을 가리킨 후 비교한다. 두 항목의 값의 크기가 뒤바뀌어 있으면 값을 교환한다. 비교 포인터를 오른쪽 한칸씩 이동한다. 배열의 끝까지 또는 정렬된 항목까지 1~2단계를 반복한다. 특징 장점 구현이 간단하다 단점 순차적으로 확인하기 때문에 크기에 맞지 않는 비교가 일어남 순차적으로 확인하기 때문에 N개의 길이가 있다면 N번 교환이 발생 코드 def bubble_sort(input_l..
알고리즘 알고리즘은 어떤 문제를 해결하기 위한 여러 동작들의 모임을 말합니다. 다시 말해 어떤 값을 입력받아 결과 값을 출력하는 절차를 의미합니다. 이러한 문제 해결에 필요한 조건은 다음과 같습니다. 입력 : 0개 이상의 입력(외부) 데이터가 존재해야 한다. 출력 : 1개 이상의 결과가 존재해야 하며 중복되지 않은 2개 이상의 결과가 있어야 한다. 유한성 : 모든 과정 및 명령은 유한한 범위에서 실행과 종료 해야한다. 효율성 : 모든 과정은 명백히 실행 가능한 범위에 있어야 한다. 명확성 : 수행과정은 명확해야 한다. 좋은 알고리즘이란? 좋은 알고리즘이란 처리 시간이 짧고, 사용 메모리가 적은 것을 말합니다. 우리는 두가지 조건을 각각 시간 복잡도, 공간 복잡도라 말합니다. 시간 복잡도는 알고리즘을 수행..
빅오표기법 알고리즘이 얼마나 빠른지에 대한 표시방법입니다. 연산횟수를 기준으로 하기 때문에 속도를 시간단위로 세지 않으며 빅오표기법은 최악의 경우에 대한 기준으로 합니다. 실행 시간 선형시간 계산복잡도 이론상 에서 입력의 길이 n에 대해 특정 알고리즘의 실행시간이 선형의 특징을 가지는 것을 말합니다. 예를 들어 100의 길이를 가진 원소를 단순탐색으로 자료를 확인한다면 100번의 횟수를 확인해야 하고 이때 걸리는 시간을 선형시간이라 말합니다. 로그시간 정렬된 리스트를 이진탐색 사용시 원소의 log2N번의 횟수로 자료를 찾을 수 있습니다. log28 -> 3회, log232 -> 5회, log21024 -> 10회 이진탐색의 경우 로그시간으로 실행됩니다. 알고리즘 속도 알고리즘의 속도는 시간이 아니라 연산..