선형 큐(Linear Queue)
·
JAVA/알고리즘
- FIFO - First In First Out(선입선출)- 인큐(EnQueue)를 통해 자료 입력, 디큐(DeQueue)을 통해 자료 출력 * 매표소, 가장 먼저 줄서있는 사람에게 표를 먼저 제공한다. * 선형 큐 알고리즘은 Rear가 배열의 끝에 닿아 있으면, 앞에 배열의 빈 부분(Q[0])이 남아 있어도 더이상 삽입연산을 하지 못한다.메모리를 효율적으로 관리하지 못함. 이러한 문제점을 해결하기 위해 원형 큐가 만들어졌다. JAVA 소스코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778..
스택(Stack) 알고리즘(JAVA)
·
JAVA/알고리즘
- 제한적으로 접근할 수 있는 나열 구조(접근 방법은 언제나 목록의 끝에서만 가능)- 선형 구조 LIFO - Last In First Out(후입선출)- 푸쉬(push)를 통해 자료 입력, 팝(pop)을 통해 자료 출력 * 프링글스, 통 안에 가장 나중에 들어간(push) 감자칩부터 먹게 된다(pop). 스택 활용 예- 역순 문자열 만들기- 수식 괄호 검사- 수식 후위표기법으로 변환, 후위표기 수식의 연산 JAVA 소스코드1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848..
퀵 정렬(Quick Sort)
·
JAVA/기타
- 리스트 가운데서 하나의 원소를 고름(pivot 선정)- pivot 앞에는 pivot보다 작은 값이 오고, pivot 뒤에는 pivot보다 큰 값들이 오도록 리스트를 둘로 분할한다.- 분할된 두 개의 리스트에 대해 재귀함수를 통해 이 과정을 반복한다.- 시간복잡도 : 최악 O(n^2), 평균 O(nlogn) JAVA 소스코드12345678910111213141516171819202122232425262728293031323334public class Quick { public void sort(int[] data, int l, int r){ int left = l; int right = r; int pivot = data[(l+r)/2]; do{ while(data[left] pivot) right--..
삽입 정렬(Insertion Sort)
·
JAVA/기타
- 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함.- 배열의 두 번째 데이터 부터 연산을 시작함.- 시간복잡도 : O(n^2) [1회전] [2회전] [3회전] [4회전] JAVA 소스코드123456789101112131415161718192021222324252627public class Insertion { public void sort(int[] A){ int size = A.length; int temp = 0; int j = 0; for(int i = 1; i =0 && temp
선택 정렬(Selection Sort)
·
JAVA/기타
- 주어진 데이터 중 최소값을 찾음- 최소값을 맨 앞에 위치한 값과 교환- 정렬된 데이터를 제외한 나머지 데이터를 같은 방법으로 정렬- 시간복잡도 : O(n^2) [1회전] [2회전] [3회전] [4회전]선택 정렬의 장점- 데이터의 양이 적을 때 좋은 성능을 나타냄.- 작은 값을 선택하기 위해서 비교는 여러번 수행되지만 교환횟수가 적다. 선택 정렬의 단점- 100개 이상의 자료에 대해서는 속도가 급격히 떨어져 적절히 사용되기 힘들다. JAVA 소스코드12345678910111213141516171819202122232425262728293031public class Selection { public void sort(int[] data){ int size = data.length; int min; //최..
버블 정렬(Bubble Sort)
·
JAVA/기타
- 두 인접한 원소를 검사하여 정렬하는 방법- 시간복잡도 : O(n^2) [1회전] [2회전] [3회전] - 세번의 회전에 걸쳐 정렬은 완료되었지만 프로그램은 남은 데이터의 비교연산을 계속 처리함.- 정렬은 비교연산을 통해 가장 큰 데이터 부터 끝에 정렬됨. 버블 정렬의 장점- 구현이 쉽다.- 이미 정렬된 데이터를 정렬할때 가장 빠르다. 버블 정렬의 단점- 다른 정렬에 비해 정렬 속도가 느리다.- 역순배열을 정렬할때 가장 느리다. JAVA 소스코드1234567891011121314151617181920212223242526public class Bubble { public void sort(int [] data){ int temp = 0; for(int i=data.length-1; i>=0; i--){..