자바에서 배열이나 리스트를 정렬하려고 한다면 java.util.Arrays 클래스의 sort() 메서드를 사용하시면 따로 정렬 로직을 짜지 않아도 한번의 메소드 호출로 간편하게 배열이나 리스트를 정렬할 수 있습니다. Arrays클래스는 배열의 복사, 항목 정렬, 검색과 같은 배열을 조작 기능을 가지고 있습니다. 배열의 오름차순 정렬 Arrays.sort()메서드의 매개값으로 기본 타입 배열이나 String배열을 지정해주면 자동으로 오름차순 정렬이 됩니다. 기본타입 배열 오름차순 정렬 import java.util.Arrays; public class Sort{ public static void main(String[] args) { int arr[] = {4,23,33,15,17,19}; Arrays.s..
정렬 속도 비교 이때까지 포스팅했던 정렬들의 시간복잡도에 대해 알아보도록 하겠습니다. 아래는 정렬속도 비교에 사용하였던 코드입니다. 정렬속도 비교 프로그램 (C언어/C++) 출처 #include #include #include #define MAX_SIZE 60000 //데이터의 개수 지정 #define SWAP(x,y,t) ((t)=(x), (x)=(y), (y)=(t)) //SWAP함수 설정 int original[MAX_SIZE]; //랜덤함수로 만든 데이터를 저장할 원본 배열 int list[MAX_SIZE]; //각 정렬 알고리즘에서 사용할 데이터 배열 int n; //데이터의 개수를 받는 전역변수 설정 int sorted[MAX_SIZE]; //합병정렬에서 사용할 데이터를 저장할 배열 cloc..
계속해서 o(n log n) 시간복잡도를 가지는 정렬방법에 대해 알아보겠습니다. 이번에는 퀵정렬입니다. 실무에서도 가장 많이쓰이고 속도와 효율성이 가장 좋다고도 할수있는 정렬 방식입니다. 퀵정렬 이번에도 그림을 통해 설명해드리겠습니다. ☞ 먼저 PVIOT을 정합니다. 대부분 정렬속도를 위하여 가운데 숫자를 PIVOT으로 정하는게 효율적입니다. ☞ PVIOT값과 LEFT값을 비교하여 LEFT값이 PIVOT보다 크다면 PIVOT값과 RIGHT값을 비교합니다. RIGHT값이 PIVOT보다 크다면 RIGHT커서를 왼쪽으로 이동시킨후 다시 PIVOT값과 비교합니다. ☞ RIGHT값이 PIVOT보다 작다면 LEFT값과 RIGHT값을 바꿉니다. 그런뒤 LEFT값을 오른쪽으로 한칸 옮깁니다. ☞ LEFT값과 RIGHT..
앞선 포스팅 3개에서 버블정렬, 삽입정렬, 선택정렬에 대해서 알아보았습니다. 하지만 위의 3정렬방법은 굉장히 기초적인 정렬방법으로 시간복잡도는 O(N^2)를가지며 실무에서 잘 쓰이는 정렬방법은 아닙니다. 이번 포스팅부터는 시간복잡도 O(N * LogN)을 가지는 정렬방법에 대해 알아보겠습니다. 먼저 이번포스팅에서는 병합정렬에 대해 알려드리겠습니다. 병합정렬은 정렬할 배열을 반으로 나누어 좌측과 우측 배열을 계속하여 분할해 나간 후 각 배열내에서 정렬 후 병합하는 과정을 통해 정렬하는 알고리즘입니다. 병합정렬(합병정렬) 그림을 통해 설명해드리겠습니다. ①분할과정 먼저 정렬할 숫자들을 원소단위로 분할합니다. ②병합과정 그런 뒤 분할한 원소들을 합치면서 정렬합니다. 병합정렬 소스 코드 (C언어/C++) #in..
저번 포스팅에서는 버블 정렬에 대해 알아보았는데요 이번 포스팅에서는 선택 정렬에 대해 한번 포스팅해보려 합니다. 버블 정렬이 뒤에서부터 차례대로 정렬하는 방법이라면 선택 정렬은 버블 정렬과는 반대로 앞에서부터 차례대로 정렬하는 방법입니다. 예제는 배열에 있는 정수 값을 내림차순으로 정렬하는 방법을 들고 왔습니다. 오름차순으로 바꾸려면 예제 문의 IF문의 부등호를 반대로 바꿔주시면 간단하게 구현 가능합니다. 선택 정렬 선택 정렬은 배열 내의 기준이 되는 수(A[0]) 와 나머지의 수를 비교하여 오름차순일 경우 낮은 수, 내림차순일 경우 높은 수를 앞으로 보내는 방식입니다. 첫 번째 FOR문 위와같은 방법으로 첫번째 for문에서 기준값 [0]번째 Index의값과 나머지 값을 비교하여 가장 낮은수를 앞으로 보..
정렬(Sort)하는 방법을 포스팅합니다. 정렬하는 방법은 대표적으로 버블정렬,선택정렬,삽입정렬 이렇게 3가지가 있습니다. 차례대로 한번 알아보도록 하죠 먼저 이번 포스팅에서는 버블정렬에 대해 포스팅하도록 하겠습니다. 예제는 배열에 있는 정수값을 오름차순으로 정렬하는 예제를 들고왔습니다. 내림차순으로 정렬하실경우 예제의 IF문의 부등호방향만 바꿔주시면 됩니다. 버블정렬 버블정렬은 배열내의 두개의 인접한 Index를 비교하여 더 큰 숫자를 뒤로 보내 차곡차곡 쌓아 정렬하는 방법입니다. 결론적으로 말하자면 배열의 뒷쪽부터 정렬하는 방법이라고 생각하시면 될 듯 합니다. ① for문에서 [0]번째 Index와 [1]번째의 Index값을 비교하여 더 큰 숫자를 뒤로 보내줍니다. ② for문에서도 마찬가지로 [1]번..