[알고리즘] 삽입 정렬 (Insertion Sort) 이란?
·
알고리즘
삽입 정렬 (Insertion Sort) 란? 손 안의 카드를 정렬하는 방법과 유사하다. 2번째 원소부터 시작하여 그 앞(왼쪽) 원소들과 비교하여 삽입할 위치를 지정한 후, 원소를 뒤로 옮기고 지정된 자리에 자료를 삽입하여 정렬하는 알고리즘이다. 과정 (오름차순) 1. 정렬은 2번째 위치의 값을 temp에 저장한다. 2. temp와 이전에 있는 원소들과 비교하여 이전 값이 더 큰 경우 이전 값을 오른쪽으로 한 칸씩 이동하다가 그렇지 않은 경우 temp를 삽입한다. 3. 1번으로 돌아가 다음 위치의 값을 temp에 저장하고 반복한다. Python Code def insertion_sort(arr): n = len(arr) for i in range(1, n): temp = arr[i] prev = i-1 ..
[알고리즘] 선택 정렬 (Selection Sort) 이란?
·
알고리즘
선택 정렬 (Selection Sort) 란? 해당 순서에 원소를 넣을 위치는 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘. 해당 자리를 선택하고 그 자리에 오는 값을 찾는 방법이다. 과정 (오름차순) 1. 주어진 배열 중에서 최솟값을 찾는다. 2. 그 값을 맨 앞에 위치한 값과 교환한다. 3. 맨 처음 위치를 뺀 나머지 배열을 같은 방법으로 교환한다. 이를 반복한다. Python Code def selection_sort(arr): n = len(arr) index_min = 0 for i in range(n): index_min = i for j in range(i+1, n): # 최소 값의 위치를 찾는다. if arr[j] < arr[index_min]: index_min = j temp =..
[알고리즘] 버블 정렬 (Bubble Sort) 이란?
·
알고리즘
버블 정렬 (Bubble Sort) 란? 서로 인접한 두 원소의 대소를 비교하고, 조건에 맞지 않다면 자리를 교환하며 정렬하는 알고리즘 과정 (오름차순의 경우) n : 원소의 개수 1. 1회전에서는, 1번째 원소와 2번째 원소를, 2번째 원소와 3번째 원소를, 3번째 원소와 4번째 원소를 ,... 와 같은 형태로 (n-1)번째 원소와 (n)번째 원소를 비교하여 앞의 원소의 값이 더 크다면, 서로 교환한다. 2. 1회전을 수행하고 나면 가장 큰 원소가 (n)번째 위치로 이동하게 된다. 2회전에서는 (n)번째 원소는 정렬에서 제외되고, 2회전을 수행하고 나면 (n-1)번째 원소가 배열에서 2번째로 큰 원소가 된다. 이런 방법으로 정렬을 1회전 수행할 때마다 정렬에서 제외되는 데이터가 하나씩 늘어난다. Pyt..