[알고리즘] 기본적인 정렬 알고리즘

2023. 6. 21. 12:36·Programming/Algorithm
인프런 무료 강의 권오흠교수님 '영리한 프로그래밍을 위한 알고리즘 강좌' 보면서 공부한 내용입니다.
부족한 내용이나 잘못된 내용은 댓글남겨주시면 감사하겠습니다!

출처 : https://inf.run/iezc

 

 # Selection Sort
 - 각 루프마다 최대 원소를 찾음
 - 각 루프마다 최대 원소와 맨 오른쪽 원소를 교환
 - 각 루프마다 맨 오른쪽 원소를 제외함
 
 - 하나의 원소만 남을 떄까지 위의 루프를 반복

 

selectionSort(A[], n) // 배열 A[1 ... n]을 정렬
	 {
	 	for last <- n downto 2 { // for 루프는 n-1번 반복
	 		A[1 ... last] 중 가장 큰 수 A[k]를 찾음 // 가장 큰 수를 찾기 위한 비교횟수 : n-1, n-2, ..., 2, 1
	 		A[k] <-> A[last]; // A[k]와 A[last]의 값을 교환
	 	}
	 }
	 
	 시간복잡도 T(n) = (n-1) + (n-2) + ... + 2 + 1 = 0(n^2)

 

bubbleSort(A[], n) // 배열 A[1 ... n]을 정렬
	 {
	 	for last <- n downto 2 { // for 루프는 n-1번 반복
	 		for i <- 1 to last-1 // for 루프는 각각 n-1, n-2, ..., 2, 1번 반복
	 			if(A[i] > A[i+1]) then A[i] <-> A[i];  // 교환 - 교환은 상수시간 작업 
	 	}
	 }
	 
	 시간복잡도 T(n) = (n-1) + (n-2) + ... + 2 + 1 = 0(n^2)

 

insertionSort(A[], n) // 배열 A[1 ... n]을 정렬
	 {
	 	for i <- 2 to n  // for 루프는 n-1번 반복
	 		A[1 ... i]의 적당한 자리에 A[i]를 삽입 // 삽입은 최악의 경우 i-1번 비교
	 }
	 
	 최악의 경우 : T(n) = (n-1) + (n-2) + ... + 2 + 1 = 0(n^2)

'Programming > Algorithm' 카테고리의 다른 글

[알고리즘/백준] 15552번 : 빠른 A+B (Java)  (1) 2025.04.08
[알고리즘/백준] 11382번 : 꼬마 정민 (Java)  (1) 2025.04.07
[알고리즘] 멱집합 powerset  (0) 2023.06.20
[알고리즘] Recursion의 응용 : N-Queens  (0) 2023.06.15
[알고리즘] Recursion의 응용 - Counting Cells in a Blob  (0) 2023.06.14
'Programming/Algorithm' 카테고리의 다른 글
  • [알고리즘/백준] 15552번 : 빠른 A+B (Java)
  • [알고리즘/백준] 11382번 : 꼬마 정민 (Java)
  • [알고리즘] 멱집합 powerset
  • [알고리즘] Recursion의 응용 : N-Queens
min_sol
min_sol
  • min_sol
    비글개발연구소🐾
    min_sol
  • 전체
    오늘
    어제
    • 분류 전체보기 (278)
      • Programming (128)
        • Algorithm (52)
        • JAVA (40)
        • GIS (5)
        • PyQt (10)
        • C# (11)
        • Mobile (6)
        • AI (4)
      • Backend (36)
        • Spring (14)
        • JSP (11)
        • Network (5)
      • Frontend (29)
        • React (11)
        • Vue (13)
        • Next.js (4)
      • Database (10)
        • PostgreSQL (1)
        • Oracle (8)
        • Elasticsearch (1)
      • DevOps (8)
        • Linux (7)
        • Mac (1)
      • Tools (31)
        • IntelliJ (1)
        • GitHub (10)
        • RPA (20)
      • Security (9)
      • etc (21)
        • ERROR (5)
        • 세미나 | 교육 (10)
        • 자격증 (1)
        • 일상 (2)
        • 2021 (2)
  • 인기 글

  • 태그

    spring
    vue.js
    생능출판
    자바
    VUE
    Java
    코딩테스트
    PyQt5
    백준
    이클립스
    자동화
    계산기
    알고리즘
    jsp
    명품자바에센셜
    자료구조
    RPA
    PyQt
    연습문제
    스윙
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
min_sol
[알고리즘] 기본적인 정렬 알고리즘
상단으로

티스토리툴바