[ 개발 기본 지식 ] 회귀호출, 인덱스, 정렬, 이진 검색

sonny·2024년 9월 13일
0

개발 지식이 통통

목록 보기
2/11
post-thumbnail
분야상세지식
자료구조스택, 힙
알고리즘회귀호출, 인덱스, 정렬, 이진 검색
운영체제프로세스, 스레드, 뮤텍스, 세마포어
디자인패턴MVC 아키텍처
프로그래밍 언어네이티브 코드, 콜 바이 밸류, 콜 바이 레퍼런스
경험간단한 텍스트 기반의 게임 만들어보기

출처

두번 째 회귀호출, 인덱스, 정렬, 이진 검색에 대해 자세히 알아보자

회귀 호출 (재귀 호출, Recursive Call)

회귀 호출은 함수가 자기 자신을 다시 호출하는 것이다. 이 방식은 어떤 큰 문제를 작은 문제로 쪼개서, 그 작은 문제를 해결하고 다시 원래의 문제로 돌아가는 방식인데,예를 들어 계단을 오를 때 한 번에 한 계단씩 오른다고 생각해보자. 만약 계단이 10개 있으면, "1개의 계단을 오른 뒤, 남은 9개의 계단을 올라라"라는 식으로 문제를 쪼개는 거다. 이걸 반복하면 결국엔 계단을 다 오르게 된다.

재귀 호출은 반복적으로 같은 일을 할 때 매우 유용하다. 예를 들어, 숫자 5의 팩토리얼(5!)을 구할 때 재귀를 사용하면 다음과 같이 쪼갤 수 있다.

5! = 5 * 4!
4! = 4 * 3!
...
1! = 1  (여기서 멈춤)

인덱스 (Index)

인덱스는 어떤 데이터나 항목이 배열이나 리스트에서 어디에 위치하는지 나타내는 번호이다. 배열은 여러 개의 데이터를 하나로 묶은 구조인데, 인덱스를 이용해 배열의 특정 위치에 있는 데이터를 쉽게 찾을 수 있다.

예를 들어 친구들 이름이 적힌 리스트가 있다고 해보자. "첫 번째 친구는 누구지?"라고 물으면, 인덱스 0에 있는 이름을 보면 된다. 컴퓨터는 보통 인덱스를 0부터 시작해서 번호를 매기기 때문에 예를 들어, ["창수", "연희", "민경"] 라는 리스트에서 창수는 인덱스 0, 연희는 인덱스 1, 민경은 인덱스 2에 해당한다.

정렬 (Sorting)

정렬은 데이터나 리스트를 크기나 순서대로 배열하는 것이다. 예를 들어, 시험 점수를 높은 순서대로 정렬하거나, 이름을 알파벳 순서로 정렬할 수 있다.

자, 친구들의 키가 150, 165, 140이라고 하면, 이 숫자를 작은 순서대로 정렬하면 140, 150, 165가 될텐데, 컴퓨터는 이런 정렬을 빠르고 효율적으로 해주는 다양한 알고리즘을 가지고 있기에 가능한 것이다.

이진 검색 (Binary Search)

이진 검색은 이미 정렬된 리스트에서 원하는 값을 빠르게 찾는 방법이다. 리스트를 반으로 나눠서, 찾고자 하는 값이 어디 있는지 계속 절반씩 줄여가며 검색하는 방식인데 이진 검색은 리스트가 클 때 정말 효율적이다.

예를 들어 책 100페이지가 있는 책에서 50페이지를 찾고 싶다고 해보자.
처음에 1페이지부터 100페이지까지 다 살펴보는 게 아니라, 중간인 50페이지를 먼저 확인해볼 수 있다. 바로 50페이지가 맞으면 끝이고, 찾고자 하는 페이지가 50보다 크면 50페이지 이후만 찾고, 작으면 50페이지 이전만 찾는 식으로 범위를 좁혀가면 된다.
이진 검색은 리스트가 이미 정렬되어 있어야 작동하는 알고리즘이다.

요약하자면

  • 회귀 호출은 함수가 자기 자신을 다시 호출하는 것
  • 인덱스는 어떤 데이터나 항목이 배열이나 리스트에서 어디에 위치하는지 나타내는 번호
  • 정렬은 데이터나 리스트를 크기나 순서대로 배열하는 것
  • 이진 검색은 이미 정렬된 리스트에서 원하는 값을 빠르게 찾는 방법
profile
iOS 좋아. swift 좋아.

0개의 댓글