-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
알고리즘 면접 질문 정리 #72
Comments
삽입정렬입니다. |
삽입 정렬은 배열의 처음부터 각 요소를 적절한 위치해 삽입해가면서 정렬하는 방식이다. |
Merge Sort를 사용하는 것이 좋을 것 같습니다. Quick Sort도 최고의 시간복잡도가 O(n logn)이지만 최악의 시간복잡도는 O(n^2)이기 때문에 최악과 최고의 시간 복잡도가 O(n logn)인 Merge Sort를 사용하는 것이 좋다고 생각합니다. |
기수정렬을 사용하면 좋습니다. |
탐색하기 위해서입니다. |
우선, 배열 내에서 정렬이 이루어져 추가적인 메모리 사용이 없습니다. |
버블 정렬은 오름차순 정렬이라고 가정할 때 가장 뒤부터 정렬됩니다. |
삽입 정렬은 첫번째 원소부터 차례대로 이미 정렬된 배열 부분과 비교하여 자신의 위치를 찾아 삽입합니다. 따라서 삽입할 위치까지만 탐색하면 되기때문에 선택 정렬, 버블 정렬에 비해 빠릅니다. 또한 삽입 정렬은 데이터가 모두 정렬된 경우 한 번씩만 비교하면 되므로 O(N)을 가집니다. |
Quick Sort는 매우 빠른 정렬 속도를 자랑하는 분할 정복 알고리즘* 중 하나로 합병정렬과 달리 리스트를 비균등하게 분할합니다. 피봇을 설정하고 피봇보다 큰 값과 작은 값으로 분할하여 정렬을 합니다. |
피벗을 랜덤한 위치에서 잡아 최악의 경우가 나올 확률을 줄입니다. |
분할 정복 기법을 사용합니다. 주어진 배열을 원소가 하나밖에 남지 않을 때까지 계속해서 쪼개고, 크기 순으로 재배열하며 합칩니다. |
|
코틀린에서 정렬은 자바와 같습니다. |
최소신장트리(Minimum Spanning Tree, MST)는 연결 그래프에서 모든 노드를 연결하는 트리를 만들 때, 간선의 가중치 합이 최소가 되도록 하는 사이클이 존재하지 않는 트리를 말한다. |
다익스트라 알고리즘
벨만- 포드 알고리즘
플로이드-와샬 알고리즘
|
안정하다는 것은 동일한 값을 갖는 데이터들의 순서가 정렬된 후에도 유지되는 것을 말합니다.
|
큰 문제를 작게 쪼개어 풀 수 있는 단위로 나눈 다음에 작은 단위를 합쳐가며 풀어가는 방식입니다. |
|
하지만 시간 복잡도가 |
안정 정렬 - 동일한 값에 대해 기존의 순서가 유지되는 정렬 방식 ( 버블 정렬, 삽입 정렬 ) 따라서 선택 정렬은 기존순서가 유지되지않아 불안정 정렬이다. |
기수 정렬은 비교하지 않는 정렬 알고리즘으로 낮은 자릿수부터 정렬을 수행합니다. |
가장 큰 값 몇 개만 필요한 경우 유용하게 사용할 수 있습니다. |
음수 간선에서 최소비용이 무한대가 되기 때문에 최단거리를 계산할 수 없습니다. |
The text was updated successfully, but these errors were encountered: