전공 공부
-
3. 삽입정렬전공 공부/알고리즘 2019. 3. 12. 16:11
이제는 안 보면 섭섭한 동영상부터 삽입정렬 알고리즘은 배열의 앞에서부터 차례대로 비교하면서 적절한 위치를 찾아 삽입하면서 데이터를 정렬한다.배열이 길어질수록 효율성은 떨어지지만 구현이 간단하고시간 복잡도는 O(n^2) 이지만 선택정렬이나 버블정렬보다 빠르다. 영상에서 일어나는 일을 그림으로 풀면 삽입정렬의 특징은 반복문을 j번 실행했을 시 배열의 앞에서부터 j+1 항목까지 정렬된다는 점이다. 무슨 말이냐면 for 문을 2번 실행하고 나면 배열의 세번째 항목까지는 정렬된 상태라는 것 이 점을 이용해서 실제 코드로 구현할 때에는 j번째 원소와 j+1번째 원소의 크기를 비교하였을 때 j번째 원소가 더 클 경우① 두 원소의 위치를 교환하고 ② 인덱스 값을 하나 줄여서③ j번째 원소와 j-1번째 원소의 크기를 비..
-
2. 선택정렬전공 공부/알고리즘 2019. 2. 19. 17:27
이번 시간에도 신나는 동영상부터 출처 : https://ko.wikipedia.org/wiki/%EC%84%A0%ED%83%9D_%EC%A0%95%EB%A0%AC 선택정렬의 핵심은 (나혼자 이해하기로) 최소값을 '선택'해서 다른 값들과 비교하고, 현재 선택한 최소값이 비교값보다 크다면 그 비교값을 다시 최소값으로 선택하는 것 영상에서 일어나는 일을 좀 더 소스 친화적으로 풀어보자면 [첫번째 루프] [두번째 루프] [세번째 루프]이런 식으로 진행이 된다. 이걸 자바 소스로 풀어내면 123456789101112131415161718192021222324252627282930public class SelectionSort { public SelectionSort(){} public String sort(int..
-
1. 버블 정렬전공 공부/알고리즘 2019. 2. 15. 16:37
정렬 알고리즘은 나무위키가 참 잘 정리했다는 소문을 듣고 공부하러 감(출처 : https://namu.wiki/w/%EC%A0%95%EB%A0%AC%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98#fn-10) 일단 동영상부터 버블정렬의 원리는 아주 간단하고 직관적이다.이웃해있는 값끼리 비교해서 더 작은 값을 앞으로 보내주는 것을 계속 반복해주는 것이다.바쁜 현대인들을 위해 위 영상에서 일어나는 일을 그림으로 정리해봤다. (힘들어서 첫번째 루프 도는 것만 그림) 이런 짓을 몇 번 더 하고 나면 정렬이 완성된다. 이중for문을 통해 구현하기 때문에 시간 복잡도는 O(N^2)정리하자면 제일 직관적으로 이해하기 쉽고 제일 구린 정렬 알고리즘이다. 이 로직을 자바로 구현해보면 이렇다. 123..