목록python/Data Structure (11)
Kim Seon Deok
1.단순 선택 정렬 가장 작은 원소부터 선택해 알맞은 위치로 옮기는 작업을 반복하며 정렬하는 알고리즘 교환 과정은 다음과 같다. 아직 정렬하지 않은 부분에서 값이 가장 작은 원소 a[min]을 선택한다. a[min]과 아직 정렬하지 않은 부분에서 맨 앞에 있는 원소를 교환한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # 단순 선택 정렬 알고리즘 구현하기 from re import I from typing import MutableSequence def selection_sort(a: MutableSequence) -> None: """단순 선택 정렬""" n = len(a) for i in range(n-1): min = i # 정렬할 부분에서 가장 작은 원소의 인덱스 fo..
정렬 (sorting) key를 항목값의 대소관계에 따라 데이터 집합을 일정한 순서로 바꾸어 늘어놓는 작업 오름차순 정렬 : 값이 작은 데이터를 앞에 늘어놓는 것 내림차순 정렬 : 값이 큰 데이터를 앞에 늘어 놓는 것 안정적인 알고리즘 : 값이 같은 원소의 순서가 정렬한 후에도 유지되는 것 안정적이지 않은 알고리즘 : 정렬한 후에도 원래의 순서가 유지된다. 내부 정렬 : 정렬할 모든 데이터를 하나의 배열에 저장할 수 있는 경우에 사용하는 알고리즘 외부 정렬 : 정렬할 데이터가 많아서 하나의 배열에 저장할 수 없는 경우에 사용하는 알고리즘 버블 정렬 = 단순 교환 알고리즘 이웃한 두 원소의 대소 관계를 비교하여 필요에 따라 교환을 반복하는 알고리즘 패스 : 일련의 비교 교환하는 과정 패스를 한 번 수행할 ..
순수한 재귀 = 재귀호출을 여러 번 실행하는 함수 하향식 분석 : 가장 위쪽에 위치한 상자의 함수 호출부터 시작하여 계단식으로 자세히 조사해 나가는 분석방법 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 순수한 재귀 함수 구현하기 >> 하향식 분석 def recur(n: int) -> int: """순수한 재귀 함수 recur의 구현""" if n > 0: recur(n-1) print(n) recur(n-2) x = int(input(f'정숫값을 입력하세요.: ')) recur(x) Colored by Color Scripter cs recur(4)의 실행과정 1. recur(3)을 실행 2. 4를 출력 3. recur(2)를 출력 상향식 분석 : 아래쪽부터 쌓아 올리며 분석하는 방법 ..
재귀 : 어떠한 이벤트에서 자기 자신을 포함하고 다시 자기 자신을 사용하여 정의되는 경우 양의 정수를 순서대로 곱한다 = 순차곱셈 = math.factorial()함수 factorial()함수는 n-1팩토리얼값을 구하기 위해 자신과 똑같은 factorial()함수를 또 호출 재귀 호출 : 자기 자신과 똑같은 함수를 호출 1 2 3 4 5 6 7 8 9 10 11 12 13 # 양의 정수 n의 팩토리얼 구하기 def factorial(n:int) -> int: """양의 정수 n의 팩토리얼값을 재귀적으로 구함""" if n > 0: return n * factorial(n-1) else: return 1 if __name__ == '__main__': n = int(input('출력할 팩토리얼값을 입력하세..
큐 = 데이터를 임시 저장하는 자료구조 FIFO(first in first out) 구조 : 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출 구조 인큐(enque) :큐에 데이터를 추가 디큐(deque) : 데이터 를 꺼내는 작업 프론트(front) : 데이터를 꺼내는 쪽 >> 맨 앞의 원소 리어 (rear) : 데이터를 넣는 쪽 >> 맨 끝의 원소 링 버퍼 = 배여 맨 끝의 원소 뒤에 맨 앞의 원소가 연결되는 자료구조 프론트(front) : 맨 앞 원소의 인덱스 리어(rear) : 맨 끝 원소 바로 다음의 인덱스(다음 인큐되는 데이터가 저장되는 위치) 링 버퍼로 큐를 구현하면 원소를 옮길 필요 없이 front와 rear 의 값을 업데이트하는 것만으로 인큐와 디큐를 수행할 수 있다. 모든 처리의 복잡..