병합 정렬 (Merge Sort) 총 정리 - 개념, 원리, 동작 예시, 시간복잡도, C언어, Java, Python 예시코드, 주의점, 장단점
1. 병합 정렬이란?병합 정렬은 "분할 정복(Divide and Conquer)" 기법을 이용한 정렬 알고리즘으로, 리스트를 반으로 나누고 각각을 재귀적으로 정렬한 후 병합하여 정렬된 리스트를 만드는 방식입니다. 안정 정렬에 속하며, 대규모 데이터에서 특히 효율적입니다. 2. 원리배열을 두 부분으로 나눕니다.각 부분을 재귀적으로 병합 정렬합니다.두 정렬된 부분을 하나로 병합합니다. 3. 동작 예시 (구체적인 설명)정렬할 배열: [38, 27, 43, 3, 9, 82, 10]배열 분할:[38, 27, 43, 3]와 [9, 82, 10]으로 나눕니다.왼쪽 부분 [38, 27, 43, 3] 정렬:다시 [38, 27]과 [43, 3]으로 나눕니다.[38, 27]은 [27, 38]로 정렬.[43, 3]은 [3..
2024. 12. 31.
삽입 정렬(Insertion Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Python 예시코드, 주의점, 장단점
1. 삽입 정렬이란?삽입 정렬은 정렬되지 않은 데이터를 하나씩 가져와 이미 정렬된 부분에 적절한 위치에 삽입하는 방식으로 동작하는 정렬 알고리즘입니다. 간단한 구현과 적은 데이터에서는 높은 성능을 보이는 정렬 방식입니다. 2. 원리배열의 두 번째 요소부터 시작하여 해당 요소를 정렬된 부분에 삽입합니다.이전 요소들과 비교하며 적절한 위치를 찾습니다.모든 요소가 정렬될 때까지 반복합니다. 3. 동작 예시 (구체적인 설명)정렬할 배열: [5, 3, 8, 4, 2]첫 번째 단계:두 번째 요소 3을 정렬된 부분 [5]에 삽입합니다.3은 5보다 작으므로 앞에 삽입합니다.결과: [3, 5, 8, 4, 2]두 번째 단계:세 번째 요소 8을 정렬된 부분 [3, 5]에 삽입합니다.8은 이미 가장 크므로 그대로 둡니다...
2024. 12. 31.
선택 정렬 (Selection Sort) 총 정리 - 개념, 원리, 동작 예시, 시간복잡도, C언어, Java, Python 예제코드, 주의점, 장단점
1. 선택 정렬이란?선택 정렬은 정렬되지 않은 리스트에서 가장 작은(또는 큰) 값을 찾아 맨 앞에 위치시키는 과정을 반복하여 정렬하는 알고리즘입니다. 구현이 간단하지만, 데이터 크기가 커질수록 성능이 떨어질 수 있습니다. 2. 원리정렬되지 않은 배열에서 최소값(또는 최대값)을 찾습니다.최소값을 배열의 첫 번째 요소와 교환합니다.나머지 배열에 대해 위 과정을 반복합니다.모든 요소가 정렬될 때까지 계속합니다. 3. 동작 예시 (구체적인 설명)정렬할 배열: [5, 3, 8, 4, 2]첫 번째 단계:배열에서 최소값 2를 찾습니다.2와 첫 번째 요소 5를 교환합니다.결과: [2, 3, 8, 4, 5]두 번째 단계:나머지 배열 [3, 8, 4, 5]에서 최소값 3을 찾습니다.3은 이미 두 번째 위치에 있으므로 ..
2024. 12. 31.
버블 정렬 (Bubble Sort) 총 정리 - 개념, 원리, 동작 예시, 시간 복잡도, C언어, Java, Python 예시코드, 주의점, 장단점
1. 버블 정렬이란?버블 정렬은 인접한 두 요소를 비교하며 정렬하는 가장 기본적인 정렬 알고리즘입니다. 간단한 구조와 구현 덕분에 학습 목적으로 자주 사용되지만, 효율성 면에서는 다른 정렬 알고리즘에 비해 성능이 떨어집니다. 2. 원리첫 번째 요소와 두 번째 요소를 비교하여 크기를 기준으로 위치를 바꿉니다.두 번째 요소와 세 번째 요소를 비교하여 동일한 작업을 수행합니다.마지막 요소까지 이 작업을 반복합니다. 이 과정을 한 번 완료하면 가장 큰 값이 맨 끝에 위치하게 됩니다.위 과정을 반복하며 정렬되지 않은 나머지 요소를 계속 비교해 정렬을 완성합니다. 3. 동작 예시 (구체적인 설명)정렬할 배열: [5, 3, 8, 4, 2], 오름차순으로 정렬하기첫 번째 패스 (Pass 1):비교: 5와 3 → 3..
2024. 12. 31.
[안드로이드] 꼭 알아야 할 크기 단위 총정리(dp, px, sp) - 개념, 예시, 차이점, 비교
안드로이드 개발을 하다 보면 dp, px, sp와 같은 다양한 크기 단위를 접하게 됩니다. 개발 시 어떤 단위를 써야할 지 헷갈리는 경우가 많아서 자주 구글링을 하곤 합니다. 이 글에서는 각각의 단위가 무엇인지, 어떻게 사용해야 하는지, 각각의 단위의 차이점이 무엇인지, 그리고 올바르게 활용하기 위한 팁과 주의사항을 총 정리해서 앞으로 헷갈리지 않도록 도와드리겠습니다. 1. px (픽셀, Pixel)개념: px은 화면의 실제 물리적 픽셀을 기준으로 한 단위입니다. 1px은 디스플레이의 가장 작은 단위이며, 디바이스의 해상도에 따라 크기가 고정됩니다.주의점: px은 디바이스마다 해상도가 다르기 때문에 화면 크기가 동일하더라도 화면 밀도(density)에 따라 요소 크기가 달라 보일 수 있습니다. 이로 ..
2024. 12. 30.