본문 바로가기

CS/Algorithm

(4)
정렬 알고리즘 (2) (삽입, 퀵 정렬) 목차 삽입 정렬 설명 및 코드 구현 퀵 정렬 설명 및 코드 구현 삽입 정렬과 퀵 정렬의 시간 복잡도 삽입 정렬 설명 및 코드 구현 1) 삽입 정렬이란? 삽입 정렬이란 각각의 원소들이 자신의 위치를 찾아서 삽입되는 정렬이다. 그림으로 설명하면, 정렬을 시작할 때, 가장자리에 있는 숫자를 기준으로 정렬을 시작한다. 위 그림에서는 4를 기준으로 정렬을 시작한다. ① 3 4 이므로, 그대로 있는다. ④ 12 > 10 이므로, 그대로 있는다. ⑤ 1 < 2 이므로, 1은 2보다 앞에 배치된다. ⑥ 4 < 5 < 10 이므로, 5는 4와 10 사이에 배치된다. ⑦ 5 < 6 < 10 이므로, 6은 5와 10..
정렬 알고리즘 (1) (버블, 선택, 병합(합병) 정렬) 목차 정렬 알고리즘 이란? 버블 정렬 설명 및 코드 구현 선택 정렬 설명 및 코드 구현 병합(합병) 정렬 설명 및 코드 구현 버블, 선택, 병합(합병) 정렬의 시간 복잡도 정렬 알고리즘 이란? 정렬 알고리즘 이란 원소들을 번호순이나 사전순서와 같이 일정한 순서대로 정렬하는 알고리즘이다. 정렬 알고리즘이 존재하는 이유는 탐색의 효율성 때문이다. 수많은 데이터들을 탐색할 때, 무작위로 섞여 있는 데이터를 탐색하는 것보다 정렬되어 있는 데이터를 탐색하는 것이 훨씬 효율적이고 활용성에 있어서도 용이하다. 정렬 알고리즘은 매루 많지만, 그 중에서 버블, 선택, 병합(합병) 정렬에 대해 다룰 것이다. 버블 정렬 설명 및 코드 구현 1) 버블 정렬 이란? 버블 정렬은 두 개의 인접한 자료 값을 비교하면서 위치를 교환..
탐색 알고리즘 (검색 알고리즘: 선형검색과 이진검색) 목차 탐색 알고리즘이란 선형 검색이란 C언어로 선형 검색을 구현한 코드 이진 검색이란 C언어로 이진 검색을 구현한 코드 선형 검색과 이진 검색의 시간복잡도 탐색 알고리즘 이란? 탐색 알고리즘이란 수많은 데이터들 사이에서 원하는 데이터를 찾는 알고리즘이다. 실제로 검색 엔진에 탐색 알고리즘이 많이 사용되기도 한다. 그래서 탐색 알고리즘을 검색 알고리즘이라고 부르기도 한다. 오늘은 탐색 알고리즘 중 선형 검색과 이진 검색에 대한 내용을 다룰 것 이다. 선형 검색 이란? 선형 검색은 위의 그림처럼, 가장 좌측부터 우측까지 순서대로 원하는 데이터를 찾아보는 알고리즘이다. 즉 첫 번째부터 끝까지 하나하나 확인하는 알고리즘이다. 선형 검색은 배열이 정렬되어 있지 않던, 정렬되어 있던 이용할 수 있다. 하지만 하나하..
알고리즘 표기법 (시간 복잡도: Big O 와 Big Ω) 목차 시간 복잡도란? Big-O 란? Big-O 의 종류 Big-Ω 란? Big-Ω 의 종류 Big-O가 낮은 알고리즘이 좋을까? Big-Ω가 낮은 알고리즘이 좋을까? 시간 복잡도란? 시간 복잡도란 입력값과 문제를 해결하는 데 걸리는 시간을 함수 관계로 나타낸 것 이다. 즉 실행시간을 기준으로, 알고리즘이 얼마나 효율적인지를 판단할 수 있는 척도이다. 시간 복잡도는 최악의 경우, 최선의 경우, 평균의 경우를 계산해서 나타낸다. 이때 최악의 경우는 Big-O(빅-오), 최선의 경우는 Big-Ω(빅-오메가), 평균의 경우는 Big-θ(빅-세타)로 나타 낸다. 이번 글은 Big-O(빅-오)와 Big-Ω(빅-오메가)에 대한 내용만 다룰 것 이다. Big-O 란? Big-O(빅-오) 란, 위에서 언급했듯이 최악의..