💡 리스트에 있는 객체를 Comparable를 활용하여 객체의 특정값으로 정렬하기 package org.kyhslam.inflearnJava.dp; import java.util.ArrayList; import java.util.Collections; class Brick implements Comparable { public int s,h,w; public Brick(int s, int h, int w) { this.s = s; this.h = h; this.w = w; } @Override public int compareTo(Brick o) { //return o.s - this.s; // 내림차순 return this.s - o.s; // 오름차순 } } public class dp_04 { pu..
https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr package com.hyosung.algo; import java.util.Scanner; public class pro_sort02 { static int[] buff; static void swap(int[]a, int x, int y) { int temp = a[x]; a[x] = a[y]; a[y] = temp; } static void quickSort(int[] a, int left, int right) { int ..
package com.kyhslam.persistence; import java.util.Collection; import java.util.List; import org.springframework.data.domain.Pageable; import org.springframework.data.repository.CrudRepository; import com.kyhslam.domain.Board; public interface BoardRepository extends CrudRepository { // bno > ? ORDER BY bno DESC limit ?,? public List findByBnoGreaterThanOrderByBnoDesc(Long bno, Pageable paging); ..
선택정렬 개념 해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘 최솟값 또는 최댓값을 찾고 남은 정렬 부분의 가장 앞에 있는 데이터와 swap하는 것이 선택정렬의 핵심이다. 첫번째 순서에는 첫번째 위치에 가장 최솟값을 넣는다. 두번째 순서에는 두번째 위치에 남은 값 중에서의 최솟값을 넣는다. 선택정렬 특징 장점 자료의 이동횟수가 미리 결정된다. 단점 시간 복잡도가 n제곱이라 효율적이지 않아코딩 테스트에서는 많이 사용하지 않는다. 안정성을 만족하지 않는다. 즉, 값이 같은 레코드가 있는 경우에 상대적인 위치가 변경될 수 있다. 선택정렬 예제 선택정렬 구현 코드 package org.kyhslam.algo; public class selectSort { public s..
| 병합정렬(Merge Sort) 대표적인 분할정복 방법을 채택한 알고리즘 이다. 퀵 정렬과 동일하게 O(N * logN)의 시간 복잡도를 가진다. 병합정렬은 정확히 반씩 나눈다는 점에서 최악의 경우에도 O(N * logN)을 보장한다. 하나씩 나누고 합쳐지면서 정렬을 수행한다. 즉, 합쳐지는 순간에 정렬을 수행한다. 왼쪽 집합의 i와 두번째 집합의 j를 증가시키면서 비교연산을 통해 비어있는 새로운 배열에 넣어준다. 병합정렬을 구현할 때 중요한 부분은 반드시 정렬에 사용되는 배열을 전역변수로 선언해야 한다는 것이다. 기존의 데이터를 담을 추가적인 배열공간이 필요하다는 점에서 메모리 활용이 비효율적이라는 문제가 있다. 구현 소스 package org.kyh.algorithm; public class mer..