일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- AWS
- 운영체제
- 개념정리
- 데이터웨어하우스
- WEB
- 웹자동화
- Amazon
- Service
- 알고리즘
- 기술면접
- 클라우드
- Django
- airflow
- 관계형데이터베이스
- DataWarehouse
- 부트캠프
- 자료구조
- 데이터엔지니어링
- SQL
- 프로그래머스
- CS
- 데이터엔지니어
- 데이터베이스
- 웹크롤링
- 데브코스
- 파이썬
- 개발
- 에어플로우
- 취준
- 웹스크래핑
- Today
- Total
사진과 음악을 좋아하는 개발자 지망생의 블로그
정렬(sort) & 탐색(search) 본문
정렬(sort) & 탐색(search)
1) 정렬(Sort)
- 배열 안에 원소들을 새로운 규칙으로 새로 늘여놓는 것
- 문자열로 이루어진 리스트의 경우 사전 순서(알파벳 순서)를 따름
① sorted(x) : 내장함수로써 정렬된 새로운 리스트를 반환함 → list 변형 X
② sort(x) : list의 method로써 해당 리스트를 정렬함 → list 변형 O
>>> num = [3, 5, 2, 1, 4]
>>> sorted(num)
[1, 2, 3, 4, 5]
>>> num
[3, 5, 2, 1, 4]
>>> num.sort()
>>> num
[1, 2, 3, 4, 5]
※ 내림차순 or 오름차순
- 오름차순은 그저 sorted() 또는 sort()함수를 호출해주면 된다
- 반면, 내림차순 정렬 시 boolean 값을 갖는 reverse 매개 변수를 넣어 줘야한다(reverse = True)
>>> l = ['a', 'b', 'c', 'd']
>>> sorted(l, reverse = True)
['d', 'c', 'b', 'a']
>>> l.sort(reverse = True)
>>> l
['d', 'c', 'b', 'a']
※ key를 지정함으로써 조건을 지정하여 정렬할 수 있음
ex) 문자열 길이 순서로 정렬
>>> L = [ {'name' : 'John', 'score' : 83}, {'name' : 'Paul', 'score' : 92} ]
>>> sorted(L, key = lambda x : x['name'])
[{'name': 'John', 'score': 83}, {'name': 'Paul', 'score': 92}]
>>> sorted(L, key = lambda x : x['name'], reverse = True)
[{'name': 'Paul', 'score': 92}, {'name': 'John', 'score': 83}]
>>> sorted(L, key = lambda x : x['score'], reverse = True)
[{'name': 'Paul', 'score': 92}, {'name': 'John', 'score': 83}]
>>> sorted(L, key = lambda x : x['score'])
[{'name': 'John', 'score': 83}, {'name': 'Paul', 'score': 92}]
2) 탐색(Search)
① 선형 탐색(Linear Search)
- 찾고자 하는 값의 list 맨 앞부터 끝까지 차례대로 찾아가는 것
- 모든 원소를 전부 비교해 봐야 하기 때문에 리스트의 길이에 비례하는 시간 소요 O(n)
② 이진 탐색(Binary Search)
- list 내 임의의 중간값을 선택하여, 찾고자 하는 값과 크고 작음을 비교하며 탐색하는 방식
- 찾고자 하는 값의 list가 정렬되어 있는 경우 적용 가능하며 O(log n)의 시간복잡도를 갖는다
재귀 알고리즘 기초
재귀함수
- 하나의 함수에서 자신을 다시 호출하여 작업을 수행하는 것 ex) 이진 트리, 자연수의 합 구하기(시그마)
- 종결조건이 반드시 필요
- 함수 호출 시 역변수, 매개변수, 반환값이 stack 영역 저장됨
→ 재귀 알고리즘으로 인해 함수를 과하게 호출 시 stack overflow가 발생하여 프로그램이 종료될 수 있음
'CS > 자료구조 & 알고리즘' 카테고리의 다른 글
자료구조 초간단 정리(Array ~ Heaps) (0) | 2023.07.12 |
---|---|
메모리 구조와 python memory management (0) | 2023.07.11 |
힙(Heap) (2) | 2023.04.14 |
트리 level 2 (이진 트리, Binary Tree) (0) | 2023.04.14 |
트리 level 1 (트리 기본, just Tree...) (0) | 2023.04.13 |