병합 정렬(Merge Sort)
키 포인트!! 일단은 반으로 나누고 나중에 합친다! 병합정렬은 퀵정렬가 달라 피벗 값이 없고 항상 반으로 나누는 특징이 있다 이렇게 반으로 쪼개는 단계때문에 O(Nlog N)이 된다. 또한 퀵 정렬과 다르게 정확히 반으로만 나누기 때문에 NlogN이 보장이 된다. 7 4 5 8 6 3 10 9 이런 배열이 있다고 가정하자 이것을 이제 2의 배수의 개수만큼 합친다. 근데 그때 오름차순으로 정렬하면서 합친다 2^1 : 4,7 5,8 3,6 9,10 2^2 : 4,5,7,8 3,6,9,10 2^3 : 3,4,5,6,7,8,9,10 이렇게 2의 승으로 진행되기 때문에 많은 데이터를 다룰 수가 있고 이 때문에 시간복잡도가 logN이다. 위의 표를 사각형으로보면 가로는 N이고 높이는 logN이다 따라서 총 시간 복..
2021. 11. 1.
선택정렬
선택정렬은 말그대로 어떤 기준에 맞는 것을 선택하여 바꾸는 알고리즘이다. 13번까지 array를 돌면서 가장 작은 값을 min에 넣어주고 그 가장 작은 값이 있는 위치를 index에 넣어준다. 그리고 현재 i=0이기 때문에 해당 위치에 있는 값을 temp에 넣어주고 0번위치에 가장 작은 값이 있던 위치의 값을 넣어준다. 그리고 그 처음 i=0의 위치에 있던 값을 index에 넣어 위치를 바꿔주는 알고리즘이다. 이 선택 정렬의 시간 복잡도는 O(N^2)이다. 1 ,2 3, 4, 5, 6, 7, 8, 9, 10 이렇게 10개의 숫자 배열이 있다면 서로 크기를 비교하기 위해 처음에 10번, 가장 작은 값을 찾았다면 그거 빼고 9번, 8번....1번 총 10+9+8+7+...+2+1= 55번 비교를 한다. 이것..
2021. 10. 29.