본문 바로가기

분류 전체보기270

병합 정렬 병합정렬 병합정렬은 하나의 리스트를 두 개의 균등한 크기로 분할하고 분할된 부분 리스트를 정렬한 다음, 두 개의 정렬된 부분 리스트를 합하여 전체가 정렬된 리스트를 얻는 방법이다. 분할 정복(divide and conquer)기법에 바탕을 두고 있다. 1. 분할 : 입렬 배열을 같은 크기의 2개의 부분 배열로 분할 2. 정복 : 부분 배열을 정렬 3. 결합 : 정렬된 부분 배열을 하나의 배열에 통합 2018. 1. 29.
힙 정렬 힙 정렬부터는 갑자기 생각해야 할 것들이 많아 졌다. 힙 정렬은 말 그대로 자료구조의 힙을 이용한 정렬 방식이다. 우선 힙의 특징은 - 완전 이진트리 구조를 가진다. - 노드 중에 최대값 or 최소값을 빠른시간 내에 찾기위해 만든 자료구조다. 힙 정렬은 힙에 정렬 대상을 모두 넣었다가 다시 하나하나 꺼내면서 정렬을 한다. 장점은 성능이 앞에서 배운 버블, 선택, 삽입 정렬에 비해 월등히 우수하고 추가 메모리가 필요하지 않다. 단점은 데이터 구조에 따라 다른 정렬에 비해 늦을 수 있다는 점이며, 안정성이 보장되지 않는다. (안정성이 보장되지 않는다는게 정확이 무슨 뜻인지는 잘 모르겠다.) 힙 정렬 코딩시 알아두어야 할 점은 노드하나를 i라고 가정할 때 노드 i의 부모노드 인덱스 : i/2 (단, i>1) .. 2018. 1. 11.
버블,선택,삽입 정렬 오늘은 정렬을 정리해보려 한다.먼저, 버블정렬 버블정렬은 인접한 인덱스끼리 값을 비교하여 큰 값을 뒤로 보내는 방식이다. 구현하기가 쉬우나, 복잡한 프로그램은 비교횟수가 많아져 사용하지 않는다. 다음은 선택정렬 선택정렬은 a[0]번의 인덱스를 하나하나 비교해가면서 최소값을 찾아 자리를 바꿔주는 방식이다. 삽입정렬은 이동을 하면서 값을 비교해 삽입 할 위치를 결정하는 방식이다. 정렬완료된 부분과 그렇지 않은 부분을 나눠놓고, 정렬되지 않은 부분의 값을 정렬완료된 부분의 인덱스와 하나하나 비교해가면서 조건이 맞는 곳에 삽입이 되는 방식이다. 또한, 성능이 좋은 편이어서 다른 정렬의 일부분으로도 쓰인다. 하지만 데이터 한개의 크기에 따라 성능 편차가 심하다. 2018. 1. 10.
임시 비밀번호 찾기 국비교육을 듣는동안 내가 맡았던 부분의 일부분을 포스팅해보려 한다.비밀번호 찾기를 했을 시 이름과 메일이 DB에 저장된 값과 일치하면, 메일로 임시 비밀번호를 발송해주는 부분이다. 컨트롤러에서는 jsp 페이지에서 입력한 이름과 이메일 값이 일치하면 member로 가져와 저장한다.그 후 A~Z까지 난수를 발생시켜 6개를 비밀번호로 저장한 후 Repository로 넘어가 값을 비교한다.비교된 결과 값 result를 model이라는 바구니에 속성값을 담아준다.아래에도 언급을 하겠지만, update는 integer를 반환하기 때문에 update문이 실행된 경우에는 값이 일치했기 때문에mailing메소드를 불러와 메일로 값을 보내주고 틀렸을 경우에는 다시 비밀번호찾기 페이지로 가게된다. package contro.. 2018. 1. 3.
배열을 이용한 스택 13년도 이후로 자료구조를 펴보지 않아 기억이 나지 않아서 당분간은 자료구조를 보려고한다..오늘은 스택! 스택(Stack)은 후입선출(Last - Input, First-Out)LIFO 구조를 가진 자료구조이며,Top : 스택의 맨 윗 부분Bottom : 스택의 맨 아래 부분Push : 스택에 데이터를 푸쉬(넣는 것)를 의미Pop : 스택에서 데이터를 빼는 것을 의미Peek : 스택에서 Top 위치에 있는 데이터를 확인 하는 것을 의미, 데이터가 증가하거나 감소하지 않음.Stack Underflow : 스택이 비어있을 때 Pop하려는 경우 발생, 더 이상 감소시킬 데이터가 없기 때문에Stack Overflow : 스택이 꽉차있을 때 Push하는 경우 발생, 더 이상 공간이 없는데 추가를 하려했기 때문에로.. 2018. 1. 3.
오픈~~ 올해부터 초보지만 간단하게라도 내가 공부한 것들을 정리해서 올려보려한다.이왕 시작했으니 포기하지말고 끝까지 해보자.알고리즘은 내가 모르거나 헷갈렸던 부분 위주로 정리한다. 2018년가즈아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ ~! 2018. 1. 1.