728x90
정렬 알고리즘
데이터 요소들을 특정한 순서대로 재배치 하는 방법을 다루는 중요한 주제이다.
- 정렬(Sorting) : 데이터를 특정한 기준에 따라 순서대로 나열하는 것을 말합니다.
- 일반적으로 문제 상황에 따라서 적절한 정렬 알고리즘이 공식처럼 사용된다.
선택 정렬(Selection Sort)
- 처리되지 않은 데이터 중에서 가장 작은 데이터를 선책해 맨 앞에 있는 데이터와 바꾸는 것을 반복한다.
- 선택 정렬은 N번만큼 반복해야 한다.
- 평균 및 최악의 시간 복잡도는 O(n^2)이다. 선택 정렬은 단순하게 이해할 수 있으나 대규모 데이터에는 비효율적일 수 있다.
array = [7,4,5,9,1,2,3]
for i in range(len(array)):
min_index = i # 가장 작은 원소의 인덱스
for j in range(i+1,len(array)):
if array[min_index] > array[j]:
min_index = j
array[i], array[min_index] = array[min_index],array[i] # 스와프
print(array)
출력 결과 : [1, 2, 3, 4, 5, 7, 9]
< python 코드 상세 설명 >
|
삽입 정렬(Insertion Sort)
- 처리되지 않은 데이터를 하나씩 골라 적절한 위치에 삽입한다.
- 선택 정렬에 비해 더 빠르게 정렬, 현재 리스트의 데이터가 거의 정렬되어 잇는 상태라면 매우 빠르게 동작한다.
- 첫번째 데이터는 그 자체로 정렬 되어 있다고 판단하고 두번째 데이터가 첫번째 데이터의 왼쪽으로 들어갈지 오른쪽으로 들어갈지 판단한다. (매번 위치를 바꿔가면서 정렬)
array = [7,4,5,9,1,2,3]
for i in range(1, len(array)):
for j in range(i, 0, -1): # 인덱스 i 부터 1까지 1씩 감소하며 반복하는 문법
if array[j] < array[j - 1] # 한칸씩 왼쪽으로 이동
array[j], array[j -1] = array[j - 1],array[j]
else: # 자기보다 작은 데이터를 만나면 그 위치에서 멈춤
break
print(array)
출력 결과 : [1, 2, 3, 4, 5, 7, 9]
<python 코드 상세 설명 >
|
728x90
'Data Science & AI > Algorithm' 카테고리의 다른 글
| 신경망과 활성화함수 (0) | 2024.09.21 |
|---|---|
| 퍼셉트론과 논리회로 1 (1) | 2024.09.18 |
| [Algorithm] 자료구조와 알고리즘 - 3. 자료구조 - 스택(Stack) (0) | 2023.09.07 |
| [Algorithm] 자료구조와 알고리즘 - 2. 자료구조 - 큐(Queue) (0) | 2023.09.06 |
| [Algorithm] 자료구조와 알고리즘 - 1. 자료구조 - 선형 리스트 (0) | 2023.09.05 |