목록공부 (5)
차밍이
목차 1. 퀵 정렬 (Quick Sort) 이란? 정렬 알고리즘의 꽃 기준점(pivot이라 부름)을 정해서, 기준점보다 작은 데이터는 왼쪽, 크면 오른쪽으로 모으는 함수를 작성한다. 왼쪽과 오른쪽은 재귀 용법을 사용해서 다시 동일 함수를 호출하여 위 작업을 반복한다. 함수는 왼쪽 + pivot + 오른쪽 을 출력한다. 분할 정복에 속하는 정렬이라고 할 수 있다. 2. 퀵 정렬 코드 작성 소스코드 data_list = [49, 97, 53, 5, 33, 65, 62, 51] def quick_sort(num_list): if len(num_list) >> [5, 33, 49, 51, 53, 62, 65, 97] 알고리즘 구현 및 풀이 quicksort 함수 만들기 만약 리스트 개수가 한 개이면 해당 리스트..
1. 선택 정렬 이란? 주어진 데이터 중, 최솟값을 찾는다. 해당 최소값을 가장 맨 앞의 데이터의 위차와 교체한다. 맨 앞의 최소값 데이터를 제외한 나머지 데이터를 대상으로 동일한 방법을 반복한다. 2. 예제 코드 import random data_list = random.sample(range(100), 10) print(data_list, end="\n\n") for i in range(len(data_list)-1): index = i for j in range(len(data_list)-i): if data_list[index] > data_list[j+i]: index = j+i data_list[index], data_list[i] = data_list[i], data_list[index] p..
버블 정렬 두 인접한 원소를 검사하면서 정렬하는 방법 앞에서부터 두 개의 데이터를 비교하면서 정렬한다. 한 번 실행하면 가장 큰 값이 가장 뒤로 정렬되는 방식이다. 두 번째 실행하면 그다음 큰 값이 가장 뒤에서 한번 전까지 데이터를 비교하며 정렬하게 된다. 시간 복잡도가 에 해당되므로 느리지만, 단순하다. data_list = [9, 7, 5, 3, 1] def bubbleSort(data_list): for i in range(len(data_list)): swap = False for j in range(len(data_list)-1-i): if data_list[j] > data_list[j+1]: swap = True data_list[j], data_list[j+1] = data_list[j+1..
목차 대표적인 데이터 구조: 링크드 리스트 (Linked List) 1. 링크드 리스트 (Linked List) 구조 연결 리스트라고도 함 배열은 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조 링크드 리스트는 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조 본래 C언어에서는 주요한 데이터 구조이지만, 파이썬은 리스트 타입이 링크드 리스트의 기능을 모두 지원 링크드 리스트 기본 구조와 용어 노드(Node): 데이터 저장 단위 (데이터 값, 포인터)로 구성 포인터(pointer): 각 노드 안에서, 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간 배열의 단점 배열의 경우 미리 데이터의 길이를 선언해야한다. 선언한 길이만큼 공간을 미리 차지하고 있다. 데이터가 인덱스에 따..
목차 자료구조란? 자료의 구조, 데이터의 구조 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미한다. 코드상으로 얼마나 효율적으로 데이터를 처리하기위해 구조적으로작성하는가를 논하는 것 알고리즘이란? 어떤 문제를 풀기 위한 절차나 방법 자료구조와 알고리즘이 중요한 이유? 어떤 자료구조와 알고리즘을 쓰냐에 따라, 성능이 매우 크게 차이가 발생된다. 프로그래밍을 잘 할 수 있는 기술과 역량을 검증하는 척도로 사용된다. 배열 배열의 장점 데이터의 시작점만 알면 내부의 데이터들의 순서를 바로 알 수 있다. 순차적인 데이터를 손쉽게 다룰 수 있다. 빠르게 데이터에 접근 가능하다. 배열의 단점 데이터가 가변적인 경우 추가나 삭제가 쉽지 않음 최대 길이를 미리 지정해야함 큐 (Queue) 큐의 구조 FI..