본문 바로가기

포트폴리오/알고리즘(나동빈 T)

(5)
나동빈 실전 알고리즘 5강 - 퀵정렬(Quick Sort) 다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요 1 10 5 8 7 6 4 3 2 9 퀵정렬은 대표적인 분할정복 알고리즘중에 하나이다. 분할정렬이란 하나의 특정한 값을 기준으로 양 쪽을 나눠서 정렬하는 것이다. 퀵정렬은 이런 특정한 값을 토대로 두 개의 작은 문제를 푸는 방식으로 해결해 나가는 것이다. blog.naver.com/ndb796/221226813382 5. 퀵 정렬(Quick Sort) 지난 시간까지 다루었던 선택 정렬, 버블 정렬, 삽입 정렬 알고리즘은 모두 시간 복잡도 O(N^2)을 가지는... blog.naver.com 자세한 설명은 나동빈 블로그에서 확인할수 있다. package excercise; public class algorithm { static void quick..
나동빈 실전 알고리즘 4강 - 삽입 정렬(Insertion Sort) 다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요 1 10 5 8 7 6 4 3 2 9 이번에는 삽입정렬을 이용하여 다음의 숫자들을 오름차순으로 정렬해보자. 삽입정렬은 앞에서부터 차례대로 봤을 때 적절한 위치에 숫자를 삽입해주는 정렬을 말을한다. 1이 선택되었을때는 가장 작기때문에 10부터 살펴본다. 10은 앞에 있는 숫자들을 봤을때 1 양 옆중에 자신이 들어갈 위치가 오른쪽에 위치해야한다. 5는 앞에 있는 숫자들을 봤을 때 1과 10 사이 중에 1과 10 사이에 들어가면 되므로 1 5 10으로 위치한다 8은 앞에 있는 숫자들을 봤을 때 1과 5와 10 사이 중에 5와 10 사이에 들어가면 되므로 1 5 8 10으로 위치한다. 이렇게 해당 숫자가 선택적으로 자리를 골라서 자리하게 되는 프로그램을..
나동빈 실전 알고리즘 3강 - 버블 정렬(Bubble Sort) 다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요 1 10 5 8 7 6 4 3 2 9 이번에는 버블 정렬(Bubble Sort)로 다음 숫자들을 오름차순으로 정리해보려고한다. 버블 정렬이란 이웃한 두 숫자를 비교하여 큰 수를 뒤로 보내는 정렬인데 확실히 듣기만해도 비효율적으로 보인다. 그럼 버블 정렬 프로그램을 작성해보자. package excercise; public class algorithm { public static void main(String[] args) { int temp = 0; int arr[] = {1, 10, 5, 8, 7, 6, 4, 3, 2, 9}; for(int i = 0; i < arr.length; i++) { for(int j = 0; j < (arr.leng..
나동빈 실전 알고리즘 2강 - 선택 정렬(Selection Sort) 2. 정렬의 개요와 선택 정렬(Selection Sort) 일반적으로 알고리즘을 공부할 때 가장 먼저 풀어보는 문제는 '정렬(Sort)' 문제입니다. 왜냐하면 정렬은 알고리즘의 효율성 차이를 확실히 보여줄 수 있기때문입니다. 다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요 1 10 5 8 7 6 4 3 2 9 위에서 주어진 숫자배열을 나열할 때 선택 정렬을 이용하기 위해서는 '가장 작은 것을 선택해서 앞으로 보낸다'라는 알고리즘을 이용해서 풀어볼 수 있다. 그러면 컴퓨터에게 이렇게 이해를 시키는 것이다. 1. 임의의 가장 작은 수를 지정한다.(최대한 큰 숫자로, 이것을 min이라고 정한다.) 2. 첫번째부터 min과 비교했을때 작은 수인지 확인한다.(가장 작은 숫자를 최대한 큰 숫자로 지정했기..
나동빈 실전 알고리즘 1강 알고리즘이란 '문제를 해결하는 절차'입니다 -알고리즘은 입력, 출력, 유한성, 명백성, 효과성을 만족해야합니다. -알고리즘은 분석을 통해 좋고 나쁨을 평가할 수 있습니다. -알고리즘은 논리이며 수학이고 실질적인 개발에 적용되는 기초적인 아이디어입니다. 알고리즘은 구체적으로 어디에 쓰일까? 알고리즘은 '개발'의 전체 과정에 사용됩니다. -실제 프로그램을 개발할 때 효율적인 알고리즘을 적용함으로써 원하는 결과를 도출해야 합니다. -스케줄 관리 프로그램 : 달력에서 특정한 달에 해당하는 일 수는 어떻게 구할까? -내비게이션 프로그램 : 여러 개의 중간 지점을 거쳐서 특정 지점으로 갈 때 가장 빠른 길은 무엇일까? -게시판 프로그램 : 한 페이지당 게시글을 10개씩 출력해야 하는데 어떻게 출력할까? 알고리즘을 ..