P(o)P(o)
개발일기
P(o)P(o)
전체 방문자
오늘
어제
  • 분류 전체보기 (7)
    • Programming (7)
      • 지식 (6)
      • Java (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 객체지향
  • 모듈
  • 모듈화
  • 로그
  • OOP
  • 객체 지향 프로그래밍
  • 결합도
  • algorithm
  • Framework
  • 객체
  • Set
  • 순서도
  • collection
  • log
  • sorting
  • object
  • 컬렉션 프레임워크
  • 정렬
  • Library
  • list
  • 프레임워크
  • map
  • 알고리즘
  • 라이브러리
  • 정렬 알고리즘
  • 응집도
  • 자바
  • Sorting Algorithm
  • 컬렉션 클래스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
P(o)P(o)

개발일기

Programming/지식

정렬 알고리즘

2022. 10. 8. 13:49

정렬 알고리즘

 

컴퓨터 과학과 수학에서 정렬 알고리즘(sorting algorithm)이란 원소들을 번호순이나 사전 순서와 같이 일정한 순서대로 열거하는 알고리즘을 말합니다.

 

이런 정렬 알고리즘에도 여러가지 알고리즘이 존재합니다.

 

선택 정렬

 

1번째 원소부터 끝까지 훑어서 가장 작은 게, 1번째, 2번째 원소부터 끝까지 훑어서 가장 작은 게 2번째…해서 (n-1)번 반복합니다.

 

 

구현 코드

 

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {

        int[] nums = { 3, 1, 5, 4, 2 };
        for(int i = 0; i < nums.length; i++) {
            int minNum = i;
            for(int j = i + 1; j < nums.length; j++) {
                if(nums[minNum] > nums[j])
                    minNum = j;
            }
            int temp = nums[minNum];
            nums[minNum] = nums[i];
            nums[i] = temp;
        }
        System.out.println("선택정렬 : " + Arrays.toString(nums));
    }
}

 

시간 복잡도

 

Best Avg Worst
n² n² n²

 

삽입 정렬

 

n번째 원소를 첫번째 원소와 k-1까지 원소와 비교해 적절한 위치에 끼워넣고 그 뒤의 자료를 한 칸씩 뒤로 밀어내는 방식입니다.

 

 

구현 코드

 

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {

        int[] nums = { 3, 1, 5, 4, 2 };
        for(int end = 1; end < nums.length; end++) {
            for(int i = end; i > 0; i--){
                if(nums[i-1] > nums[i]){
                    int temp = nums[i-1];
                    nums[i-1] = nums[i];
                    nums[i] = temp;
                }
            }
        }
        System.out.println("삽입정렬 : " + Arrays.toString(nums));
    }
}

 

시간 복잡도

 

Best Avg Worst
n n² n²

 

버블 정렬

 

1번째 원소와 2번째 원소를 비교하여 정렬하고, 2번째 원소와 3번째 원소를, …, n-1번째와 n번째를 정렬한 뒤 다시 처음으로 돌아가 이번에는 n-2번째 원소와 n-1번째 원소까지 정렬한다.

 

 

구현 코드

 

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {

        int[] nums = { 3, 1, 5, 4, 2 };
        for(int i = 0; i < nums.length; i++) {
            for(int j = 0; j < nums.length - i - 1; j++) {
                if(nums[j] > nums[j+1]) {
                    int temp = nums[j+1];
                    nums[j+1] = nums[j];
                    nums[j] = temp;
                }
            }
        }
        System.out.println("버블정렬 : " + Arrays.toString(nums));
    }
}

 

시간 복잡도

 

Best Avg Worst
n² n² n²

 

저작자표시 비영리 변경금지 (새창열림)

'Programming > 지식' 카테고리의 다른 글

로그  (0) 2022.10.19
알고리즘  (0) 2022.10.15
프레임워크, 라이브러리  (0) 2022.10.06
결합도와 응집도  (0) 2022.10.06
OOP  (0) 2022.10.04
    'Programming/지식' 카테고리의 다른 글
    • 로그
    • 알고리즘
    • 프레임워크, 라이브러리
    • 결합도와 응집도
    P(o)P(o)
    P(o)P(o)

    티스토리툴바