[Java] sort(정렬)

Date:     Updated:

카테고리:

태그:

java.png

변수의 두 값 변경하기

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 

요약. 정렬은 데이터를 특정 기준에 따라 순서대로 나열하는 것입니다

벌써 포스팅 양이 어느 정도 축적되었따. 뿌듯하네.. 더 열심히 오래오래 하자~~

Java 카테고리 내 다른 글 보러가기

댓글 남기기