자료구조,알고리즘

자료구조,알고리즘

정렬 (퀵 정렬, 병합 정렬, 힙 정렬, 도수 정렬)

퀵 정렬 퀵 정렬은 정렬할 배열을 기준을 중심으로 왼쪽 오른쪽으로 2개의 부분집합으로 나누어 나가면서 기분보다 작은 값을 왼쪽으로, 기준보다 큰 값을 오른쪽으로 정렬한다. 이때 부분집합 기준값을 중심으로 2개의 부분집합으로 나누어 분할을 하고 부분집합의 크기가 1이 될때까지 계속 한다. 병합 정렬(합병 정렬) 합병 정렬은 리스트를 지속적으로 반으로 자르고 그 부분집합이 1개의 집합으로 될 때까지 분할한다. 자른 부분집합들을 한쌍씩 모아 정렬과 합병을 동시에 처리한다. 이러한 과정을 반복하여 최정적으로 정렬된 배열을 얻는다. import java.util.Arrays; public class Main { public static int[] src; public static int[] tmp; public ..

자료구조,알고리즘

정렬 (버블 정렬, 선택 정렬, 삽입 정렬, 쉘 정렬)

버블 정렬 버블 정렬은 배열의 앞부터 시작해서 두개씩 대소를 비교해 만약에 왼쪽이 더 크다면 자리를 바꾼다. 한칸 오른쪽으로 옮겨가서 또 대소를 비교하고 교환한다. 배열의 크기 - 1번 순회를 하고 한번 순회를 마치면 가장 오른쪽에 가장 큰 수가 배치된다. 그렇기 때문에 회차를 거듭하면서 순회를 해야할 칸의 수가 한칸씩 줄어들게 되고 배열의 크기 -1번으로 정렬이 끝나게 된다. import java.util.Arrays; public class Sort{ public static void swap(int[] array, int i, int j) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } public static void bubbleSo..

자료구조,알고리즘

자바에서의 정렬

정렬이란 배열이나 리스트에서 대소크기에 맞지 않는 숫자가 무작위로 있다고 했을 때 이를 오름차순, 내림차순으로 정렬을 해주는 것을 정렬을라고 한다. 자바에서는 java.util.Arrays클래스에서 sort()라는 메소드를 제공해 주기 때문에 따로 자체적으로 코드를 짜지 않아도 돼서 굉장히 간편하다. Arrays클래스는 배열의 복사, 정렬, 검색같은 기능들을 제공하는 굉장히 유용한 클래스이다. Arrays.sort(배열); 오름차순 정렬 일반적으로 sort()메소드를 호출하면 오름차순으로 정렬이 된다. 정수 뿐만이 아니라 String도 정렬을 해준다. import java.util.Arrays; public class Sort{ public static void main(String[] args) { i..

자료구조,알고리즘

재귀함수(Recursion) Feat.팩토리얼, 유클리드 호제법

재귀함수는 무엇인가? 재귀함수란 한 함수에서 자신(함수)을 다시 호출하여 반복적인 작업을 처리하는 것에 목적을 둔 가진 함수이다. 일반적으로 사용하는 for문과 while문 같은 반복적인 코드를 특정 조건아래 사용하는 반복문들은 재귀함수로 표현이 가능하며 반대로 재귀함수를 반복문으로도 표현이 가능하다. 일반적인 반복문과 마찬가지로 무한 루프가 되지 않게 종료 조건을 설정하는 것이 중요하다. 먼저 예시로 주어진 숫자부터 1까지의 총합을 구하는 것을 예를 들어보자 public class Test{ public static void recursionTotalSum(int num){ if(num

codes-convergence
'자료구조,알고리즘' 카테고리의 글 목록