|
겨울 동안 연구실에서 대학원생들, 학부 인턴들 모두 모여 함께 공부할 책입니다. 학부 시절에 알고리즘 수업을 (아마도) 데이터구조론 시간과 네트워크와 알고리즘 시간(네트워크 또는 그래프 상에서 쓰는 알고리즘)에 배운 게 전부이므로, 더 깊이있게 공부하려고 고른 책입니다.
학교 도서관에서 영어 책으로 빌려서 보고 있었는데, 국내 도서가 있는 곳에 가보니 한글로 번역된 책이 있네요. 그래서 한글판으로 빌려서 읽고, 수도코드 부분이랑 약간 이해 안되는 부분 정도만 원서를 보고 있습니다.
지난 여름에 합병정렬(병합정렬)과 퀵 정렬은 구현해서 블로그에 글로 남겨두었는데요.
2015/07/09 - [노트정리/알고리즘 놀이] - 자바로 구현한 퀵 소트(quick sort), 자바 소스 코드
2015/07/04 - [노트정리/알고리즘 놀이] - 자바로 구현한 머지소트(merge sort, 합병정렬), 자바 소스 코드.
더블릿에서 문제 풀 때, 이게 삽입 정렬인지도 모르면서 그냥 구현해서 썼었습니다. 쉬운거지만 블로그에 남겨두려고 글로 써봅니다.
2장 insertion sort에서 삽입정렬의 수도코드는 다음과 같습니다.
for j = 1 to A.length key = A[j] i = j - 1 while i >= 0 and a[i] > key A[i+1] = A[i] i = i - 1 A[i+1] = key
(책과 달리 수도코드 그대로 코딩하면 구현되도록 i, j의 값을 바꿈)
그래서 자바로 구현하면 아래와 같습니다.
public class Main { public static void main (String[] args) { int[] a = {5,2,4,6,1,3}; for(int j = 1; j < a.length; j++) { int key = a[j]; int i = j-1; while(i >= 0 && a[i] > key) { a[i+1]=a[i]; i = i - 1; } a[i+1]=key; } for(int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } } }
'노트정리 > 알고리즘 놀이' 카테고리의 다른 글
바이오인포매틱스 프로그래밍 연습 사이트 (0) | 2017.05.08 |
---|---|
2차원 공간에서 퍼지 클러스터링(fuzzy clustering) 자바 구현 (0) | 2016.06.03 |
블로그의 스팸 덧글 검출하는 방법 - 자카드 유사도(Jaccard similarity). 자바 구현. (2) | 2016.06.03 |
Teofilo F. Gonzalez (2007), Handbook of Approximation Algorithms and Metaheuristics, Taylor & Francis Group. (0) | 2016.05.24 |
Skyline operator 세미나 프리젠테이션 자료 (2) | 2015.08.08 |
스카이라인 오퍼레이터 의사코드 Skyline Operator Pseudo code (0) | 2015.07.30 |
자바로 구현한 퀵 소트(quick sort), 자바 소스 코드 (2) | 2015.07.09 |
자바로 구현한 머지소트(merge sort, 합병정렬), 자바 소스 코드. (19) | 2015.07.04 |