전체 글186 정렬 알고리즘[Quick Sort] Quick sort 란? Quick sort는 최선,평균 시간복잡도가 O(n log n)이고, 최악의 경우에는 O(n^2)인것을 확인할 수 있다.그리고 메모리는 O(n log n)인것을 확인할 수 있다 Quick sort는 이름에서도 나타나듯이 평균적으로 매우 빠른 수행속도를 자랑하는 정렬방법이다. Quick sort도 Merge sort와 같이 분할정복법을 사용한다. 그러나 Merge sort와 달리 리스트를 균등하게 분할할 필요는 없다.Quick sort도 Merge sort와 같이 시간복잡도가 O(n log n)인데, Quick sort가 훨씬 짧은 시간이 걸린다는것을 알 수 있다. 왜그럴까??이는 "참조지역성의 원리"로 설명할 수 있다!Quick sort는 알고리즘 특성상 동일한 배열 내에서 자리.. 2024. 7. 22. 정렬 알고리즘[Merge Sort] 정렬알고리즘을 살펴보기전에 먼저 시간복잡도에 대해서 알아볼 필요가 있다시간복잡도에 대한 내용을 정리했었어서 링크만 첨부하도록 하겠다시간복잡도란?간단하게 한줄로 요약해보면시간복잡도란 "입력값과 연산수행시간의 상관관계를 나타내는 척도" 를 말한다즉, "문제를 해결하는데 걸리는 시간과 입력의 합수관계"이다. 시간복잡도는 최악을 기준으로 "빅오 표기법"으로 표시하여 성능을 예측하는데,시간복잡도가 빠른순으로 보면 아래와 같이 나타낼 수 있다O(1) O(log n) O(n) O(n log n) O(n^2)O(1)이 시간복잡도가 가장 좋고(가장 빠르고), O(n^2)이 가장 안좋은것(가장 느림)을 알 수 있다 Merge sort 란?이제 5개의 정렬알고리즘이 있는 표를 보면서 Merge Sort에 대해서 알아.. 2024. 7. 22. 알고리즘[시간복잡도] 시간복잡도란?우리는 일상생활에서 거의 알고리즘을 사용한다예를들어 출퇴근할때 어떻게가야 효율적으로 갈수있을지 생각하는것도 알고리즘이라고 할 수 있다.이때 우리가 중요하게 생각하는것이 "속도"다. 시간복잡도란 "입력값과 연산수행시간의 상관관계를 나타내는 척도" 를 말한다즉, "문제를 해결하는데 걸리는 시간과 입력의 합수관계"이다. 시간복잡도 표현방법?점근적 표기법으로 시간복잡도를 나타내는데, 아래 3가지가 있다최상의 경우 : 오메가 표기법 (Big-Ω Notion)평균의 경우 : 세타 표기법 (Big-θ- Notion)최악의 경우 : 빅오 표기법 (Big-O Notion)평균인 세타표기법을 사용하는것이 가장 좋다고 생각할 수도 있는데, 평가하기 까다롭다고한다.시간복잡도는 최악을 기준으로 "빅오 표기법"으로.. 2024. 7. 22. [Android/Kotlin] Room의 3요소와 역할은 뭘까? ❓ RoomDB 란??SQLite 데이터베이스를 더 쉽게 사용할 수 있도록 도와주는 ORM(Object-Relational Mapping) 라이브러리다.RoomDB를 사용하면 DB와 앱 간의 데이터 작업을 간소화하면서도, SQLite의 강력한 기능까지 활용할 수 있다는 이점이 있다. 주요특징SQLite위에서 작동해서, 복잡한 SQL쿼리를 작성하지 않고 데이터 효율적으로 관리가능컴파일시점에 SQL문법검사를 수행해, 오류 줄여줌 (런타임 오류 감소)테이블과 객체간의 변환이 자동으로 처리됨 (데이터 매핑)Room은 LiveData, Flow같은 라이프사이클 인식컴포넌트와 잘 통합되어, 반응형 프로그래밍에 적합함백그라운드 작업최적화-> 데이터 작업은 기본적으로 백그라운드 스레드에서 수행하도록 되어있는데, 얘는 .. 2024. 6. 23. [Android/Kotlin] 프래그먼트간 데이터를 공유하는 ViewModel 카카오맵에서 라벨(마커)를 눌렀을때 bottomSheet가 나오는데,마커를 눌렀을때 지역에 따라 bottomSheet의 데이터가 다르게 나왔으면 했다 마커를 눌렀을때 MapFragment에서 데이터를 받아오는것까지는 성공했다그런데 그 받아온 데이터를 뿌려줄곳이 MapFragment가 아니라 BottomSheetFragment였다.즉, 서로 다른 Fragment에서 같은 viewModel데이터를 공유해야되는 상황이였다 그럴땐 sharedViewModel을 사용해서 viewModel을 선언할때 activityViewModels()로 선언하면, 서로 다른 Fragment에서 같은 viewModel데이터를 공유해서 사용할 수 있다!!!(한쪽 프래그먼트에서는 Data를 Update하고, 다른 한 프래그먼트에서는 .. 2024. 6. 5. [에러] StateFlow -> launchWhenCreated deprecated 해결 viewLifecycleOwner.lifecycleScope.launch {}를 사용하여 Fragment의 수명 주기에 연결된 코루틴을 사용하여 Flow를 사용하면, 이lifeCycle의 수명주기를 인식을 못한다는 단점이 있다 따라서 lifecycleScope.launchWhenCreated를 사용하여, lifeCycle의 수명주기를 인식하도록 해줄수있다아래는 공식문서에 나온 설명이다launchWhenStarted는 이 LifecycleCoroutineScope를 제어하는 수명 주기가 최소한 Lifecycle.State.STARTED 상태일 때 지정된 블록을 시작하고 실행합니다.반환된 Job은 Lifecycle이 폐기되면 취소됩니다. 즉, launchWhenCreated는 수명 주기가 STARTED .. 2024. 5. 31. 이전 1 ··· 3 4 5 6 7 8 9 ··· 31 다음