목록맨앞 (2)
개발 무지렁이
분할정복 알고리즘인 퀵(Quick) 정렬 특정값을 기준으로 큰숫자와 작은숫자로 분할하자 (기준값, pivot) ❓ 분할정복 알고리즘이란 : 분할한 다음 각각 정렬하고 합치면 빠르다. 🕑 시간복잡도: O(N * log(2)N) [ 각 단계에서 N번씩 탐색 * 쪼개지는 깊이 ] [ 평균적으로 반씩 쪼개진다 ] 퀵(Quick) 정렬 코드 구현 1. 피벗을 맨 앞에있는 값으로 잡는다. pivot = A[start] 2. i = start + 1로 잡고 A[i]가 피벗보다 작으면 그냥 넘긴다. i++ 3. j = end로 잡고 A[j]가 피벗보다 크면 그냥 넘긴다. j-- - 엇갈리면 pivot과 swap, i > j - 엇갈리지 않으면 양쪽 인덱스 숫자를 swap 4. 엇갈리면 while문에서 빠져나와 재귀함수..
선택(Select) 정렬 가장 작은(큰) 것을 선택해서 맨 앞으로 보내자 🕑 시간복잡도: O(N^2) [ 비교연산횟수: N + N-1 + N-2 + ... + 1 = (N+1)N/2번 ] 선택(Select) 정렬 코드 구현 import java.util.*; class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.next(); int[] A = new int[str.length()]; for(int i = 0; i < str.length(); i++) { A[i] = Integer.parseInt(str.substring(i, i+1)); } for(i..