일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 선택정렬
- 자료구조
- expo-cli error
- GitHub
- watchmanresponse
- retrofit
- 쿼리문
- MySQL
- Kotlin
- sockettimeout
- h2 error
- 데이터 이해
- ADsP
- kotlin checkbox error
- kotlin recyclerview checkbox error
- watchman error
- Today
- Total
목록자료구조&알고리즘 (3)
Stand up lee
병합 정렬(merge sort)란 분할정복 알고리즘 중 하나로 재귀용법을 활용한 정렬 알고리즘이다. 1. 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다 2. 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다 3. 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다 예를 들어 data_list = [1, 9, 3, 2] 먼저 [1, 9], [3, 2] 로 나누고 [1] [9] 로 나눈다 정렬해서 합친다. [1, 9] 다음 [3, 2] 도 [3] [2] 로 나눈다 정렬해서 합친다 [2, 3] 이제 [1, 9] 와 [2, 3]을 합친다. 1 2 이니 [1, 2] 9 > 3 이니 [1, 2, 3] 9 밖에 없으니, [1, 2, 3, 9] 🎵 알고리즘 구현 1..
삽입 정렬(insertion sort)란 해당 인덱스(key 값) 앞에 있는 데이터(a)부터 비교해서 key 값이 더 적으면, a값을 뒤 index로 복사한다. 이를 key 값이 더 큰 데이터를 만날 때까지 반복한다. 예를 들어 data_list = [9, 3, 2, 5] 일 때 sorting을 해보자 처음 한번 실행하면, key값은 9, 인덱스(0) - 1 은 0보다 작으므로 끝: [9, 3, 2, 5] 두 번째 실행하면, key값은 3, 9보다 3이 작으므로 자리 바꾸고, 끝: [3, 9, 2, 5] 세 번째 실행하면, key값은 2, 9보다 2가 작으므로 자리 바꾸고, 다시 3보다 2가 작으므로 끝: [2, 3, 9, 5] 네 번째 실행하면, key값은 5, 9보다 5이 작으므로 자리 바꾸고, 3보..
선택 정렬 선택 정렬이란 가장 작은 것을 선택해서 앞으로 보내는 정렬 기법이다. 가장 작은 것을 선택하는 데 N번, 앞으로 보내는 데 N번의 연산으로 O(N²)의 시간 복잡도를 가진다. 2 4 3 1 9 6 7 8 10 5 1 4 3 2 9 6 7 8 10 5 1 2 3 4 9 6 7 8 10 5 1 2 3 4 5 6 7 8 9 10 한번 정렬할 때마다 발견하는 최솟값을 앞으로 보내고, 최솟값을 넣은 index 부터 시작하여 다시 최솟값을 탐색하여 앞으로 보내는 과정을 반복한다. #include #include #define SIZE 1000 int a[SIZE]; void swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp; } int main(){ in..