정렬

Algorithm

[Algorithm] 여러 가지 정렬2 - 빠른 정렬(1)

[여러 가지 정렬 1]에 나오는 정렬들 보다는 조금 복잡하지만 더 빠른, 배열을 정렬(오름차순)하는 방법을 알아보자. 1. Merge Sort 배열을 분할하여 각각 정렬하고, 정렬된 결과를 합치는 분할정복(Divide and Qunquer) 방식 주어진 배열을 둘로 나누어 각각 정렬하고, 이를 하나로 합친다. -> 둘로 나뉜 부분 배열은 어떻게 정렬할까? 둘로 나뉜 배열을 또 둘로 나누어 각각을 정렬하고, 이를 하나로 합친다. -> 또 나뉜 배열을 둘로 나누고, ... 길이가 N인 배열을 정렬하기 위해서는 길이가 N/2인 배열을 정렬해야 하고, 또 그 배열을 정렬하기 위해서는 길이가 N/4인 배열을 정렬해야 하고, ... , 결국 길이가 1인 배열을 정렬해야 하는데, 길이가 1인 배열을 정렬하는 것은 너..

Algorithm

[Algorithm] 여러 가지 정렬1 - 간단하지만 느린 정렬들

배열을 정렬(오름차순)할 수 있는 여러 가지 방법에 대해서 알아보자. 1. Selection Sort 주어진 배열에서 가장 작은 데이터를 선택하여 앞으로 보내는 정렬 첫 번째 과정에서 가장 작은 데이터를 찾아 배열의 첫 번째 자리에 넣고, 두 번째 과정에서 그 다음 작은 데이터를 찾아 두 번째 자리에 넣고, ... n-1자리까지 반복한다. n개의 데이터에서 가장 작은 데이터를 찾고, n-1개의 데이터에서 가장 작은 데이터를 찾고, 그 다음은 n-2개, n-3개, ... 이렇게 이어지기 때문에 O(N^2)의 시간복잡도를 가진다. public void selectionSort(int[] arr) { for (int i = 0; i < arr.length; i++) { for (int j = i + 1; j ..

주니어 개발자의 아카이브
'정렬' 태그의 글 목록