[Java] sort(정렬)
카테고리: Java
태그: coding Programming Java
변수의 두 값 변경하기
package com.ohgiraffers.section04.sort;
public class Application1 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
int temp;
temp = num1;
num1 = num2;
num2 = temp;
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
int[] arr = {2, 1, 3};
int temp2;
temp2 = arr[0];
arr[0] = arr[1];
arr[1] = temp2;
for(int i : arr){
System.out.print(i + " ");
}
}
}
- 출력값
num1 = 10
num2 = 20
num1 = 20
num2 = 10
1 2 3
순차정렬에 대해 이해하고 활용할 수 있다
- 순차 정렬이란 정렬 알고리즘에서 가장 간단하고 기본이 되는 알고리즘으로
- 배열의 처음과 끝을 탐색하면서 순차대로 정렬하는 가장 기초적인 정렬 알고리즘이다
package com.ohgiraffers.section04.sort;
public class Application2 {
public static void main(String[] args) {
int[] iarr = {2, 5, 4, 6, 1, 3};
// 인덱스를 한 개씩 증가시키는 반복문
for(int i = 1; i<iarr.length; i++ ){
// 인덱스가 증가할 때마다 처음부터 해당 인덱스까지 값을 비교하는 반복문
for(int j=0; j<i; j++){
if(iarr[i] < iarr[j]){
int temp;
temp = iarr[i];
iarr[i] = iarr[j];
iarr[j] = temp;
}
}
}
for(int i : iarr){
System.out.print(i + " ");
}
}
}
- 출력값
1 2 3 4 5 6
선택정렬(select sort)에 대해 이해하고 적응할 수 있다
- 배열을 전부 탐색하여 최소값을 고르고 왼쪽부터 채워나가는 방식의 정렬
- 데이터 양이 적을 때 좋은 성능을 나타낸다(교환횟수가 적음)
- 하지만 배열을 전부 탐색하여 최소값을 찾아야 하기 때문에 100개 이상의 자료에서는 급격하게 속도가 저하된다
package com.ohgiraffers.section04.sort;
public class Application3 {
public static void main(String[] args) {
int[] iarr = {2,5,4,6,1,3};
int min; // 최소값을 가진 데이터 인덱스 저장 변수
int temp;
for(int i = 0; i<iarr.length -1; i++){
min = i;
for(int j = i + 1; j<iarr.length; j++){
if(iarr[min] > iarr[j]){
min =j;
}
}
temp = iarr[min]; //최소값을 데러옴
iarr[min] = iarr[i]; // 0부터 시작
iarr[i] = temp;
}
for( int i : iarr ){
System.out.print( i + " ");
}
}
}
-출력값
1 2 3 4 5 6
버블 정렬에 대해 이해하고 적응할 수 있다
- 인접한 두개의 원소를 검사하여 정렬하는 방법
- 구현이 쉽다는 장점이 있으며, 이미 정렬된 데이터를 정렬할 때 가장 빠르다
- 하지만 다른 정렬에 비해 정렬 속도가 느리며, 역순으로 정렬할 때 가장 느린 속도를 가진다
package com.ohgiraffers.section04.sort;
public class Application4 {
public static void main(String[] args) {
int[] iarr = {2,5,4,6,1,3};
int temp;
for(int i = iarr.length - 1; i >= 0; i--){
for(int j = 0; j < i; j++) {
if(iarr[j] > iarr[j + 1]) {
temp = iarr[j];
iarr[j] = iarr[j + 1];
iarr[j+1] = temp;
}
}
}
/* 설명. 값 출력용 반복문 */
for(int i = 0; i < iarr.length; i++){
System.out.print(iarr[i] + " ");
}
}
}
- 출력값
1 2 3 4 5 6
삽입정렬(insert sort)에 대해 이해하고 적용할 수 있다
- 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열과 비교하여 자신의 위치에 삽입하여 정렬
- 배열의 두번째 데이터부터 연산을 시작한다
- 버블정렬의 비교횟수가 많은 단점을 개선하기 위해 고안된 정렬 방식이다
package com.ohgiraffers.section04.sort;
public class Application5 {
public static void main(String[] args) {
/* 설명. 초기 배열 선언 및 초기화 */
int[] iarr = {2,5,4,6,1,3};
int temp;
int j = 0;
for(int i = 1; i < iarr.length; i++) {
temp = iarr[i];
for(j = i - 1; j >= 0 && temp < iarr[j]; j--) {
iarr[j+1] = iarr[j];
}
iarr[j+1] = temp;
}
/* 설명. 값 출력용 반복문 */
for(int i = 0; i < iarr.length; i++){
System.out.print(iarr[i] + " ");
}
}
}
- 출력값
1 2 3 4 5 6
요약. 정렬은 데이터를 특정 기준에 따라 순서대로 나열하는 것입니다
벌써 포스팅 양이 어느 정도 축적되었따. 뿌듯하네.. 더 열심히 오래오래 하자~~
댓글 남기기