본문 바로가기

IT 공부/알고리즘, 디자인패턴3

정렬 알고리즘 처음 알고리즘을 배울때 배웠던 내용이 정렬이었다. 정렬 종류도 많고 헛갈리 때가 있어 정리 하려한다. 1. 삽입 정렬 , 시간 : O(n^2) , 공간 : O(n) 삽입 정렬이란? 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다. function insertSort(list){ let key,j ; for(const i in list){ key = list[i]; j = i-1; while( j >= 0 && key < list[j] ){ swap(list,j,j+1); j--; } list[j+1] = key; } return list; } function swap(list,a,b){ let temp = lis.. 2023. 4. 10.
알고리즘 들어가기전에 알고리즘을 공부 하기전에 알면 좋을 내용을 적었다. 일단 표기법 알고리즘의 종류 , 자료구조 종류 그 외에도 기본적인 내용(정의 및 관련 내용)을 정리하려한다. 알고리즘이란? 어떠한 문제를 해결하기 위한 일련의 절차나 방법을 공식화한 형태로 표현 알고리즘의 조건, 분석 기준 등 내용 정리가 좋은 블로그 하단에 링크 두었습니다. O(n) 빅-오 (Big-O) - 상한 점근 빅-오메가 (Big-Ω) - 하한 점근 빅-세타 (Big-θ) - 상하한의 평균 있지만 빅-오만 쓰는듯 하다. 시간복잡도 : 입력값(크기)의 따라 실행할 때 , 연산의 수 (실행속도) 공간복잡도 : 입력값(크기)의 따라 실행할 때 , 저장 공간 공간복잡도는 하단에 정리 잘된곳을 링크 해두었습니다. O(log n) O(1) < O(n) <.. 2023. 4. 10.
싱글톤(Singleton) 싱글톤 애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴. 장점 데이터 공유가 쉽다. 메모리 낭비 방지 두 번째 이용 시 부터 객체 로딩시간 감소 단점 너무 많은 일을하거나 데이터 공유 시 다른 클래스의 인스턴스들 간에 결합도가 높아져 개발-폐쇄 원칙을 위배. 사용 예 데이터 베이스에서 커넥션 풀, 스레드 풀, 캐시 , 로그 기록 객체 등 구현 1. Lazy initialization ( 게으른 초기화 ) public class ThreadSafe_Lazy_Initialization{ private static ThreadSafe_Lazy_initialization instance; private ThreadSafe_Lazy_Initia.. 2023. 4. 10.