반응형
Day 1: 정렬의 개념과 필요성
- 강의 내용:
- 정렬의 정의
- 정렬이란 무엇인가?
- 데이터 정렬의 필요성
- 정렬 알고리즘의 실제 응용 사례
- 검색 최적화
- 데이터 분석
- 보고서 및 결과 정리
- 정렬의 정의
- 실습:
- 파이썬 내장 정렬 함수 사용해보기
# 파이썬 내장 정렬 함수 예제
data = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_data = sorted(data)
print("원본 데이터:", data)
print("정렬된 데이터:", sorted_data)
data.sort()
print("데이터 정렬 후:", data)
Day 2: 버블 정렬 (Bubble Sort)
- 강의 내용:
- 버블 정렬의 개념
- 버블 정렬의 정의 및 작동 원리
- 버블 정렬의 시간 복잡도 분석 (O(n^2))
- 버블 정렬의 장단점
- 이해 및 구현이 쉬움
- 비효율적이며 큰 데이터셋에 적합하지 않음
- 버블 정렬의 개념
- 실습:
- 버블 정렬 알고리즘 구현 및 예제
# 버블 정렬 알고리즘 구현
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
# 버블 정렬 예제
data = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(data)
print("버블 정렬 결과:", data) # [11, 12, 22, 25, 34, 64, 90]
Day 3: 버블 정렬의 최적화
- 강의 내용:
- 버블 정렬의 최적화 방법
- 교환이 없는 경우 정렬 종료
- 최적화된 버블 정렬의 시간 복잡도
- 버블 정렬의 최적화 방법
- 실습:
- 최적화된 버블 정렬 알고리즘 구현 및 예제
# 최적화된 버블 정렬 알고리즘 구현
def optimized_bubble_sort(arr):
n = len(arr)
for i in range(n):
swapped = False
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
swapped = True
if not swapped:
break
# 최적화된 버블 정렬 예제
data = [64, 34, 25, 12, 22, 11, 90]
optimized_bubble_sort(data)
print("최적화된 버블 정렬 결과:", data) # [11, 12, 22, 25, 34, 64, 90]
Day 4: 선택 정렬 (Selection Sort)
- 강의 내용:
- 선택 정렬의 개념
- 선택 정렬의 정의 및 작동 원리
- 선택 정렬의 시간 복잡도 분석 (O(n^2))
- 선택 정렬의 장단점
- 이해 및 구현이 쉬움
- 비효율적이며 큰 데이터셋에 적합하지 않음
- 선택 정렬의 개념
- 실습:
- 선택 정렬 알고리즘 구현 및 예제
# 선택 정렬 알고리즘 구현
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i+1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
# 선택 정렬 예제
data = [64, 34, 25, 12, 22, 11, 90]
selection_sort(data)
print("선택 정렬 결과:", data) # [11, 12, 22, 25, 34, 64, 90]
Day 5: 선택 정렬의 최적화
- 강의 내용:
- 선택 정렬의 최적화 방법
- 최소값, 최대값 동시 선택
- 최적화된 선택 정렬의 시간 복잡도
- 선택 정렬의 최적화 방법
- 실습:
- 최적화된 선택 정렬 알고리즘 구현 및 예제
# 최적화된 선택 정렬 알고리즘 구현
def optimized_selection_sort(arr):
n = len(arr)
for i in range(n//2):
min_idx = i
max_idx = i
for j in range(i, n-i):
if arr[j] < arr[min_idx]:
min_idx = j
if arr[j] > arr[max_idx]:
max_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
arr[n-i-1], arr[max_idx] = arr[max_idx], arr[n-i-1]
# 최적화된 선택 정렬 예제
data = [64, 34, 25, 12, 22, 11, 90]
optimized_selection_sort(data)
print("최적화된 선택 정렬 결과:", data) # [11, 12, 22, 25, 34, 64, 90]
Day 6: 정렬 알고리즘의 비교와 응용
- 강의 내용:
- 정렬 알고리즘의 비교
- 버블 정렬과 선택 정렬의 비교
- 각 알고리즘의 장단점 및 활용 사례
- 정렬 알고리즘의 실제 응용 사례
- 데이터 정렬
- 검색 최적화
- 정렬 알고리즘의 비교
- 실습:
- 다양한 데이터셋을 사용한 정렬 알고리즘 비교
# 정렬 알고리즘 비교 예제
import time
def measure_time(sort_func, arr):
start_time = time.time()
sort_func(arr)
end_time = time.time()
return end_time - start_time
data1 = [64, 34, 25, 12, 22, 11, 90]
data2 = data1.copy()
data3 = data1.copy()
print("버블 정렬 시간:", measure_time(bubble_sort, data1))
print("최적화된 버블 정렬 시간:", measure_time(optimized_bubble_sort, data2))
print("선택 정렬 시간:", measure_time(selection_sort, data3))
Day 7: 종합 연습 및 프로젝트 준비
- 강의 내용:
- 정렬 알고리즘 종합 연습
- 다양한 정렬 알고리즘 문제 풀이
- 알고리즘 성능 분석 및 최적화
- 프로젝트 준비
- 프로젝트 주제 선정 및 요구사항 분석
- 프로젝트 구현 계획 수립
- 정렬 알고리즘 종합 연습
- 실습:
- 정렬 알고리즘 종합 연습 문제 풀기
- 프로젝트 주제 및 계획 수립
### 종합 연습 문제 예시
1. 주어진 배열을 정렬하는 다양한 방법 구현
2. 배열의 최대값, 최소값을 정렬 알고리즘을 사용하여 찾기
3. 정렬된 배열에서 특정 값의 위치 찾기
### 프로젝트 주제 예시
1. 도서 관리 시스템
2. 학생 성적 분석 도구
3. 상품 가격 비교 도구
### 프로젝트 요구사항 예시
1. 도서 관리 시스템:
- 도서 정보 입력 및 저장
- 도서 정보 정렬 (제목, 저자, 출판년도 등)
- 도서 검색 기능
### 프로젝트 계획 예시
1. 데이터 입력 모듈 구현
2. 도서 정보 정렬 알고리즘 구현
3. 도서 검색 모듈 구현
이 강의는 파이썬의 기본 정렬 알고리즘을 이해하고 구현하는 것을 목표로 하며, 각 강의는 이론과 실습을 포함합니다. 다음 주차에 대한 상세 강의를 원하시면 말씀해 주세요!
반응형
'-----ETC2----- > 알고리즘(기본)' 카테고리의 다른 글
[알고리즘] Week 6: 재귀 알고리즘 - 개념과 예제 (0) | 2024.06.02 |
---|---|
[알고리즘] Week 5: 탐색 알고리즘 II - 이진 탐색 트리 및 균형 트리 (0) | 2024.06.02 |
[알고리즘] Week 4: 탐색 알고리즘 I - 탐색 개념 및 기본 알고리즘 (0) | 2024.06.02 |
[알고리즘] Week 3: 정렬 알고리즘 II - 삽입 정렬 및 고급 정렬 알고리즘 (0) | 2024.06.01 |
[알고리즘] Week 1: 알고리즘 개요 및 기본 개념 (0) | 2024.06.01 |