퀵 정렬(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; //최..