공부(3)
-
1.4 정렬 - 퀵 정렬 (Quick sort)
삽입정렬, 버블정렬, 선택정렬은 모두 시간복잡도가 O(n^2)를 가지고 있다. O(n^2)의 시간복잡도는 데이터의 갯수가 10만개일 때 100억번의 연산을 할 수 도 있기 때문에, 데이터가 많으면 사용하기 어렵다. 따라서 더 작은 시간복잡도의 알고리즘이 필요하다. 퀵정렬 - 대표적인 분할정복 알고리즘 시간복잡도 = O(N*logN) 특정한 값(pivot)을 기준으로 큰 값과 작은 값으로 나누어 교환한 뒤, 배열을 반으로 나누어 정렬 ex) int[] arr = {6, 7, 3, 2, 5, 8, 1, 4}; -> (오름차순 정렬) arr[0] -> pivot {일반적으로 가장 앞의 값을 피벗으로 설정} {6, 7, 3, 2, 5, 8, 1, 4} -> arr[1] ~ arr[end] 피벗보다 큰 수 탐색 ..
2021.05.31 -
1.2 정렬_버블정렬
버블정렬 : 가장 작은 값을 선택해서 제일앞으로 보내는 알고리즘(오름차순) 시간복잡도 : O(N^2) 직관적이고 구현하기 쉽지만 가장 효율성이 떨어지는 알고리즘 ex) int[] arr = {1, 3, 4, 5, 6, 2, 8, 7}; - 오름차순 정렬 (1, 3) 비교 (3, 4) 비교 (4, 5) 비교 (5, 6) 비교 (6, 2) 비교 -> (2, 6) . . . . 반복 arr = {1, 2, 3, 4, 5, 6, 7, 8} 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public class Blog { public static void main(String[] args) { int[] arr = { 1, 3, 4, 5, 6, 2, 8, 7 }; int t..
2021.05.28 -
1.1 정렬_선택정렬
선택정렬 : 가장 작은 값을 선택해서 제일앞으로 보내는 알고리즘(오름차순) 시간복잡도 : O(N^2) ex) int[] arr = {1, 3, 4, 5, 6, 2, 8, 7}; - 오름차순 정렬 arr[0]~arr[arr.lenth-1] 까지 최소 값을 찾아서 arr[0]와 스와프 arr[1]~arr[arr.lenth-1] 까지 최소 값을 찾아서 arr[1]와 스와프 . . . . 반복 arr = {1, 2, 3, 4, 5, 6, 7, 8} 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 public class Blog { public static void main(String[] args) { int[] arr = { 1, 3, 4, 5,..
2021.05.27