정렬 알고리즘은 다음과 같이 나눠볼 수 있다.단순하지만 비효율적인 방법 : 선택 정렬, 삽입 정렬, 버블 정렬복잡하지만 조금 더 효율적인 방법 : 퀵 정렬, 힙 정렬, 합병 정렬, 기수 정렬그 중에서 이번에는 선택 정렬에 대해 알아보려 한다.해당 순서에 원소를 넣을 위
퀵 정렬은 분할 정복 방법을 통해 주어진 배열을 정렬한다.분할 정복(Divide and Conquer) : 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략이다.불안정 정렬에 속하며, 다른 원소와의 비교만으로 정렬을 수
서로 인접한 두 원소를 검사하여 정렬하는 알고리즘이다.인접한 2개의 원소를 비교해 크기가 순서대로 되어 있지 않으면 서로 교환한다.선택 정렬과 기본 개념이 유사하다.1회전에 첫 번째 원소와 두 번째 원소를, 두 번째 원소와 세 번째 원소를, 세 번째 원소와 네 번째 원
합병 정렬이라고도 부르며, 분할 정복 방법을 통해 구현한다.빠른 정렬로 분류되며, Quick Sort와 함께 많이 언급되는 정렬 방식이다.Quick Sort와는 반대로 안정 정렬에 속한다.시간복잡도요소를 쪼갠 후, 다시 합병시키면서 정렬해나가는 방식으로 쪼개는 방식은
손 안의 카드를 정렬하는 방법과 유사하다.새로운 카드를 기존의 정렬된 카드 사이에 올바른 자리를 찾아 삽입한다.2번째 원소부터 시작하여 그 앞(왼쪽)의 원소들과 비교하여 삽입할 위치를 지정한 후, 원소를 뒤로 옮기고 지정된 자리에 자료를 삽입하여 정렬하는 알고리즘이다.
완전 이진 트리를 기본으로 하는 힙 자료구조를 기반으로 한 정렬 방식이다.불안정 정렬에 속한다.완전 이진 트리?삽입할 때, 왼쪽부터 차례대로 추가하는 이진 트리평균 : O(N logN)최선 : O(N logN)최악 : O(N logN)최대 힙을 구성한다.현재 힙 루트는
프로그래머스의 문제 중 소수 찾기 라는 문제를 풀다가 순열 알고리즘이 나와서 정리한 내용이다.1,2,3와 같은 숫자들이 있다. 이것을 중복하지 않고 순서를 끌어내보자.1,2,31,3,22,1,32,3,13,1,23,2,1위와 같이 여섯가지의 방법이 존재한다.1,2,3,
순열 : 순서를 고려하여 뽑는다.조합 : 순서와 상관없이 뽑는다.n,r을 입력으로 받아서 n개 중에서 r개를 뽑는 순열을 만들어보자.LinkedList와 boolean\[] check 배열을 사용한다.Code중복을 허용하지 않는 순열(permutation)중복을 허용하
재귀는 큰 목표 작업하나를 통일하여 간단한 작업을 여러 개로 나눌 수 있을 때 유용한 프로그래밍 패턴이다.x를 제곱하는 함수 pow(x,n)이 있다고 해보자for 문을 사용할 때재귀를 사용할 때재귀하는 과정을 차근차근 생각해 보면 1\. pow(2, 3) = 2 po
이진 탐색 혹은 이분 탐색이라고 부른다.이미 정렬되어 있는 자료 구조에서 특정 값을 찾을 때, 탐색 범위를 절반씩 나눠가면서 해당 값을 찾아가는 것이다.즉, 탐색 범위를 두 부분으로 분할하면서 찾는 방식이다.처음부터 끝까지 돌면서 탐색하는 것보다 훨씬 빠르다는 장점을