algorithm(3)
-
합병정렬(Merge Sort) 구현하기
합병정렬 알고리즘 요약 합병 정렬은 일반적인 방법으로 구현했을 때 안정 정렬에 속하며, 분할 정복 알고리즘 중 하나이다. 분할 정복(divide and conquer) 방법 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략이다. 분할 정복 방법은 대개 순환 호출을 이용하여 구현한다. 과정 설명 리스트의 길이가 0 또는 1이면 이미 정렬된 것으로 본다. 그렇지 않을 경우에는 정렬되지 않는 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다. 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. 합병 정렬의 과정 하나의 리스트를 두 개의 균등한 크기로 분할하고 분할된 부분 리스트를 정렬한..
2020.08.12 -
선택정렬(Selection Sort) 구현하기
선택정렬은 첫 번째 자료를 두 번째 자료부터 마지막 자료까지 차례대로 비교하여 가장 작은 값을 찾아 첫 번째에 놓고, 두 번째 자료를 세 번째 자료부터 마지막 자료까지와 차례대로 비교하여 그 중 가장 작은 값을 찾아 두 번째 위치에 놓는 과정을 반복하여 정렬을 수행하는 정렬 알고리즘이다. 소스코드 public static void main(String[] args) { int[] arr = {3, 6, 2, 8, 1, 15, 11, 5}; selectionSort(arr); System.out.println(Arrays.toString(arr)); } private static void selectionSort(int[] arr) { for (int i=0; i
2020.08.12 -
삽입정렬(Insertion Sort) 구현하기
삽입정렬은 1부터(0아님) n까지 순서대로 index를 설정하여 현재위치보다 앞쪽을 순회하여, 기준 index값보다 큰 값들을 한칸씩 뒤쪽으로 밀고 기준 index보다 작은 값을 만나면 해당 위치에 삽입(insertion)하는 정렬알고리즘이다. 구현하기 까다롭지 않은 알고리즘이지만… It is much less efficient on large lists than more advanced algorithms such as quicksort, heapsort, or merge sort. 퀵 정렬, 힙 정렬, 마지 정렬과 같은 고급알고리즘에서 훨씬 효율적이지 못하다는 단점을 가지고 있다. More efficient in practice than most other simple quadratic (i.e., ..
2020.08.12