This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| algorithm [2016/06/07 12:43] – ledyx | algorithm [2021/02/07 03:15] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | = Algorithm = | + | ~~REDIRECT>algorithm:algorithm~~ |
| - | + | ||
| - | {{tag>Algorithm}} | + | |
| - | + | ||
| - | = 마방진 (Magic Square) = | + | |
| - | * 홀수만 처리 가능! | + | |
| - | <sxh java ; title:Language : Java> | + | |
| - | int size = 5; | + | |
| - | + | ||
| - | int[][] arr = new int[size][size]; | + | |
| - | + | ||
| - | int middle = size/2; | + | |
| - | + | ||
| - | int i=0, j=middle; | + | |
| - | for(int num=1 ; num< | + | |
| - | arr[i][j] = num; | + | |
| - | + | ||
| - | //행 감소 | + | |
| - | i--; | + | |
| - | if(i < 0) | + | |
| - | i = size-1; | + | |
| - | + | ||
| - | //열 증가 | + | |
| - | j = (++j)%size; | + | |
| - | //아래 표현과 같다. | + | |
| - | /*j++; | + | |
| - | if(j >= size) | + | |
| - | j = 0;*/ | + | |
| - | + | ||
| - | // | + | |
| - | if(num%size == 0) { | + | |
| - | i = (i+2)%size; | + | |
| - | j--; | + | |
| - | if(j < 0) | + | |
| - | j = size-1; | + | |
| - | } | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | = 합병 정렬 (Merge Sort) = | + | |
| - | [[merge sort|참조]] | + | |
| - | + | ||
| - | = 이진 탐색 (Binary Search) = | + | |
| - | * A < X ≤ B 조건을 검색. (반환값이 index+1 이므로) | + | |
| - | <sxh java> | + | |
| - | public static int binarySearch(ArrayList< | + | |
| - | + | ||
| - | int left = 0; | + | |
| - | int right = list.size() - 1; | + | |
| - | int middle = 0; | + | |
| - | + | ||
| - | while(left <= right) { | + | |
| - | + | ||
| - | middle = (left + right) / 2; | + | |
| - | + | ||
| - | if(target < list.get(middle)) { | + | |
| - | right = middle - 1; | + | |
| - | } | + | |
| - | else { | + | |
| - | left = middle + 1; | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | if(list.get(middle) <= target && middle < list.size() - 1) { | + | |
| - | if(target < list.get(middle + 1)) { | + | |
| - | return list.get(list.size() > middle + 1 ? middle + 1 : list.size() - 1); | + | |
| - | } | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | return -1; | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | = Radix Sort (기수 정렬) = | + | |
| - | [[radix sort|참조]] | + | |