분류 전체보기(39)
-
블록체인과 비트코인
1. 블록체인이란? 블록: 전산학에서 흔히 쓰는 용어로, 대개 한꺼번에 처리하는 논리적 데이터 단위 체인: 블록들이 생성된 시간 순서에 맞춰 차례로 정렬되어 마치 쇠사슬에 묶인 것처럼 늘어선 논리적 모습을 묘사하기 위해 사용한 단어 블록체인이란, 네트워크에서 생성된 모든 데이터를 중앙 서버의 통제 없이도 발행 순서대로 정렬할 수 있는 방법을 연구하는 것이다. 이 때문에 블록체인을 탈중앙화 타임스탬프 기계라 부르기도 한다. 각 블록에는 최대 2,000 ~ 3,000개의 거래 내역만 담을 수 있는데, 이는 보통 거래 내역 하나를 기술하는데 0.3킬로바이트 정도의 용량이 필요하므로 3,000개 정도를 기술하고 나면 최대 용량인 1메가바이트가 꽉 차기 때문이다. 블록체인이 탄생한 배경부터 블록체인..
2020.04.27 -
퀵 정렬(Quick Sort)::자료구조
QuickSort는 주어진 array를 분할 정복하고, pivot을 설정해 pivot과 비교하며 정렬하는 방법입니다. pivot 설정은 개발자에 따라 다르게 설정할 수 있지만, 보통은 중앙값을 pivot으로 설정합니다. 분할 정복을 하기 때문에 최소, 평균 시간복잡도가 O(n*log n)이지만, pivot과 비교되는 값이 항상 조건에 충족되어 pivot을 지속해서 바꿔주어야 하는 경우(최악의 경우) O(n^2)이 됩니다. 기존의 array에서 값을 변경하기 때문에 공간복잡도는 1입니다. 자바와 벡터를 이용해 QuickSort를 구현해 보겠습니다. Java 코드 import java.util.Vector; public class QuickSort { static void quickSort(Vector v,..
2020.04.27 -
합병 정렬(Merge Sort)::자료구조
합병 정렬은 주어진 array를 지속적으로 쪼개어 최소 array에서 값을 비교해 다시 합치고 정렬하는 방식으로 최소, 최대, 평균 시간 복잡도가 O(n*log n)으로 비교적 가장 빠른 정렬 방법입니다. 쪼개진 array를 정렬하여 저장하기 위한 별도의 copy array가 필요하기 때문에 공간복잡도는 n입니다. 자바와 벡터를 이용해 합병 정렬을 구현해 보겠습니다. Java 코드 package sort; import java.util.Vector; public class MergeSort { static void merge(Vector v, int s, int e, int m) { Vector ret = new Vector(); int i = s; int j = m + 1; while (i
2020.04.27