All'alba vincerò

At dawn, I will win!

2025/05/23 4

정렬 알고리즘: 삽입 정렬(Insertion Sort)

삽입 정렬 (Insertion Sort): 배열을 정렬된 부분과 정렬되지 않은 부분으로 나누고, 하나씩 꺼내면서 알맞은 자리에 삽입해 나가는 방식 선택 정렬과 마찬가지로 정렬된 영역과 정렬되지 않은 영역으로 나눠서 계산함정렬되지 않은 영역에서 데이터를 꺼내서 정렬된 영역 내 적절한 위치에 삽입해서 정렬함 선택 정렬의 성능시간 복잡도: O(n²)성능이 좋지 않음 선택 정렬의 장단점장점이해와 구현이 간단함 단점성능이 O(n²)으로 별로 좋지 않음 삽입 정렬 흐름[ 4, 1, 5, 3, 6, 2 ]정렬된 영역: 4, 정렬되지 않은 영역: 1, 5, 3, 6, 2정렬되지 않은 영역의 첫 번째 원소인 1을 정렬된 영역의 마지막 데이터인 4와 비교함4는 1보다 크기 때문에 4를 오른쪽 인덱스에 덮어씀([..

CS/알고리즘 2025.05.23

정렬 알고리즘: 선택 정렬(Selection Sort)

선택 정렬 (Selection Sort): 정렬되지 않은 영역에서 가장 작은 값을 찾아서 맨 앞과 바꾸는 방식정렬된 영역과 정렬되지 않은 영역으로 나눠서 계산함배열의 정렬되지 않은 영역의 첫 번째 원소부터 마지막 원소까지 비교한 후 가장 작은 값을 첫 번째 원소와 교체함 바깥 반복문이 돌수록 정렬된 영역이 늘어나고, 안쪽 반복문의 횟수는 줄어드는 형태 선택 정렬의 성능 시간 복잡도: O(n²) 성능이 좋지 않음 선택 정렬의 장단점 장점 이해와 구현이 간단함 단점 성능이 O(n²)으로 별로 좋지 않음 예시: 숫자가 무작위로 들어있는 배열 정렬하기([4, 2, 3, 1]) 배열의 원소가 n개라면 n-1번 반복시켜줘야 함 최솟값을 가진 인덱스를 저장할 변수를 만들어줌 바깥 반복문에서 배열의 시작..

CS/알고리즘 2025.05.23

정렬 알고리즘: 버블 정렬(Bubble Sort)

버블 정렬 (Bubble Sort): 데이터를 옆 데이터와 비교하고, 자리를 바꾸어가며 정렬하는 방식버블 정렬은 배열의 무작위로 섞인 숫자를 정렬하는 방법 중 하나구현이 쉽지만 성능은 좋지 않음앞 숫자와 그 뒷 숫자를 비교해서 자리를 바꾸며 정렬을 수행한 번 반복이 끝날 때마다 제일 큰 숫자가 제일 오른쪽에 정착함 버블 정렬의 성능시간 복잡도: O(n²)성능이 좋지 않음→ 요소가 많아질수록 느려짐 버블 정렬의 장단점장점이해와 구현이 매우 간단함 단점성능이 O(n²)으로 별로 좋지 않음실무에서는 거의 사용되지 않음 예시: 숫자가 무작위로 들어있는 배열 정렬하기([4, 2, 3, 1])배열의 원소가 4개라면, 자리 교체는 최대 3번 일어나기 때문에 → 배열의 길이보다 1 작은 횟수만큼 반복 필요첫..

CS/알고리즘 2025.05.23

재귀, 콜스택

재귀 (Recursion): 어떤 것을 정의할 때, 자기 자신을 참조하는 것재귀함수: 자기 자신을 호출하는 함수재귀함수는 메모리 공간을 많이 차지함재귀함수의 필요성: 팩토리얼function myFunction(number) { consloe.log(number); myFunction(number + 1);}myFunction(1); // 무한 호출 → 메모리 초과 발생하여 자동 종료 재귀함수의 필수 조건기저 조건( = 탈출 조건, Base Case)이 반드시 있어야 함기저 조건이 없으면 무한 루프가 발생하고 메모리 초과가 일어남function myFunction(number) { if(number > 10) return; consloe.log(number); myFunction(nu..

CS/알고리즘 2025.05.23