알고리즘(5)
-
힙 알고리즘
선택 정렬을 응용한 알고리즘인 힙 정렬은 힙의 특성을 이용하여 정렬을 수행합니다. 힙이란? 힙은 부모의 값이 자식의 값보다 항상 크다는 조건을 만족하는 완전이진트리입니다. 이때 부모의 값이 사직보다 항상 작아도 부모와 자식 요소의 관계만 일정하면 힙이라고 합니다. 힙 정렬 이란? 힙 정렬은 힙을 사용하여 정렬하는 알고리즘입니다. 힙 정렬은 가장 큰 값이 루트에 위치하는 특징을 이용하는 정렬 알고리즘입니다. 힙에서 가장 큰 값인 루트를 꺼내는 작업을 반복하고 그 값을 늘어놓으면 배열은 정렬을 마치게 됩니다. 힙으로 만든 후 -> 배열의 맨 오른쪽부터 루트값 채워 넣고 -> 다시 힙으로 만든 후 -> 루트값 채워 넣음 이렇게 배열의 정렬이 완료될 때까지 힙 만들기와 루트값 넣기를 반복하여 정렬합니다. 또 시..
2023.01.24 -
재귀 알고리즘이란
재귀란 러시아 인형을 예로 처음에는 하나의 큰 인형으로 시작해 점점 작아지며 제일 작은 인형까지 나타나는 것처럼 어떤 문제를 해결하기 위해 알고리즘을 설계할 때 동일한 문제의 조금 더 작은 경우를 해결함으로써 그 문제를 해결하는 것입니다. 문제가 간단해져서 바로 풀 수 있는 문제로 작아질 때까지 말이죠. 이런 테크닉을 재귀라고 합니다. 아래 코드는 순차곱셈을 구하기 위해 만든 프로그램입니다. 이처럼 순차곱셈의 결과를 재귀적으로 구하기 때문에 순차곱셈을 구하기 위한 프로그램에는 재귀 알고리즘이 포함되겠네요 #include //정수 n의 순차곱셈 값을 반환 int factorial(int n){ //어떤 양의 정수 n 이 있을때, 1에서부터 n까지의 자연수를 모두 곱한 값을 팩토리얼이라고 함 if(n>0) ..
2023.01.23 -
검색 알고리즘이란
검색 알고리즘에는 선형 검색, 이진 검색, 해시법이 있습니다. 1. 선형검색 : 무작위로 늘어놓은 데이터 모임에서 검색을 수행합니다. 2. 이진 검색 : 일정한 규칙으로 늘어놓은 데이터 모임에서 아주 빠른 검색을 수행합니다. 3. 해시법 : 추가, 삭제가 자주 일어나는 데이터 모임에서 아주 빠른 검색을 수행합니다. 검색 알고리즘이라는 큰 틀에서 계산 시간이 가장 짧은 알고리즘을 선택하는 게 가장 효율적입니다. 배열에서 검색하는 가장 기본적인 알고리즘이며 선형 검색이라고 부릅니다. 요소가 모양으로 늘어선 배열에서의 원하는 키 값을 갖는 요소를 만날 때까지 맨 앞부터 순서대로 검색합니다. 1. 선형 검색에서 검색할 값과 같은 요소를 발견한 경우 2. 검색할 값을 발견하지 못하고 배열의 끝을 지..
2023.01.22 -
알고리즘이란
이진탐색을 배운 이후로 알고리즘에 많은 관심이 생겼습니다. 검색 알고리즘부터 재귀 알고리즘등 많은 알고리즘이 있습니다. 도대체 알고리즘이 무엇이고 어떠한 의미를 담고 있는지 공부하려고 합니다. 저는 아래와 같이 c언어를 이용해 세 정수중 최댓값을 출력하는 프로그램을 작성했습니다. 제가 작성한 코드의 최댓값을 구하는 과정은 다음과 같습니다. 1. max에 a 값을 넣는다. 2. b값이 max보다 크다면 max에 b를 넣는다. 3. c값이 max보다 크다면 max에 c를 넣는다. #include int main(void){ int a,b,c; int max; printf("세 정수의 최댓값을 구하는 프로그램입니다."); printf("첫 번째 숫자: "); scanf("%d",&a); printf("두 번쩨..
2023.01.22 -
이진탐색이란
2021년에 연세대학교에서 진행하는 AI SUMMER SCHOOL 교육 과정을 수료했었는데요 그때 이진탐색이라는 알고리즘을 알게 되었습니다 이진 탐색이란 데이터가 정렬되어 있는 배열에서 특정한 값을 찾아내는 알고리즘입니다. 이진탐색은 배열의 중간에 있는 임의의 값을 선택하여 찾고자 하는 값과 비교하고 찾고자 하는 값이 중간 값보다 작으면 중간 값을 기준으로 좌측의 데이터들을 대상으로, 찾고자 하는 값이 중간값보다 크면 배열의 우측을 대상으로 다시 탐색합니다. 같은 방법으로 해당 값을 찾을 때까지 중간의 값을 임의로 선택하고 비교합니다. 제가 만든 프로그램인데요 이진탐색을 활용하여 인덱스 값을 출력하는 프로그램입니다 코드 설명을 해보자면 배열로 변수를 만든 후 배열 안에 1,3,5,7,9라는 숫자들이 들어..
2023.01.11