Amenable
Amenable's Blog
Amenable
  • λΆ„λ₯˜ 전체보기 (189)
    • πŸ“‚ JAVA (87)
      • μ΄νŽ™ν‹°λΈŒ μžλ°” (65)
      • μ£Όμš” κ°œλ… (22)
    • πŸ“‚ 개발 μ„œμ  (22)
      • μ‹€μš©μ£Όμ˜ ν”„λ‘œκ·Έλž˜λ¨Έ (1)
      • 객체지ν–₯의 사싀과 μ˜€ν•΄ (2)
      • 클린 μ½”λ“œ (8)
      • ν•¨κ»˜ 자라기 (1)
      • 그림으둜 λ°°μš°λŠ” HTTP&Network Basic (10)
    • πŸ“‚ λ°μ΄ν„°λ² μ΄μŠ€ (8)
      • κ°œλ… (8)
      • λ¬Έμ œν’€μ΄ (0)
    • πŸ“‚ λ„€νŠΈμ›Œν¬ (14)
      • κ°œλ… (6)
      • 성곡과 μ‹€νŒ¨λ₯Ό κ²°μ •ν•˜λŠ” 1%의 λ„€νŠΈμ›Œν¬ 원리 (8)
    • πŸ“‚ μŠ€ν”„λ§ (13)
      • κΈ°λ³Έ κ°œλ… (13)
    • πŸ“‚ WEB (5)
    • πŸ“‚ 자료ꡬ쑰 (12)
      • κ°œλ… (2)
      • μ •λ ¬ (8)
      • 트리 (2)
    • πŸ“‚ μ•Œκ³ λ¦¬μ¦˜ (10)
      • μ΅œμ†Œμ‹ μž₯트리 (2)
      • μ΅œλ‹¨ 경둜 (2)
      • λ¬Έμžμ—΄ (2)
      • ETC (4)
    • πŸ“‚ μ•Œκ³ λ¦¬μ¦˜_λ¬Έμ œν’€μ΄ (4)
      • BOJ_λ°±μ€€ (4)
    • πŸ“‚ ν”„λ‘œκ·Έλž˜λ° (3)
    • πŸ“‚ DevOps (2)
      • 배포 (2)
    • πŸ“‚ ν›„κΈ° (8)
      • μš°μ•„ν•œ ν…Œν¬μ½”μŠ€(ν”„λ¦¬μ½”μŠ€) (4)
      • 2023λ…„ (3)
      • 2024λ…„ (1)
    • πŸ“‚ 회고 (1)
      • 2023λ…„ (1)

λΈ”λ‘œκ·Έ 메뉴

  • πŸš€ GitHub

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
Amenable

Amenable's Blog

버블 μ •λ ¬(Bubble Sort)
πŸ“‚ 자료ꡬ쑰/μ •λ ¬

버블 μ •λ ¬(Bubble Sort)

2023. 3. 4. 18:30

  κ±°ν’ˆ 정렬이라고도 λΆˆλ¦¬λŠ” 버블 정렬에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž.

1. μ •μ˜ πŸ‘Ÿ

버블 μ •λ ¬

  버블 정렬은 μ„œλ‘œ μΈμ ‘ν•œ 두 μ›μ†Œλ₯Ό κ²€μ‚¬ν•˜μ—¬ μ •λ ¬ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€.

 

2. λ™μž‘ 방식 πŸ‘ž

  N개의 μ›μ†Œκ°€ μžˆλ‹€κ³  ν•˜μž.
  첫 번째 μ›μ†Œμ™€ 두 번째 μ›μ†Œλ₯Ό λΉ„κ΅ν•˜μ—¬ λ§Œμ•½ 첫 번째 μ›μ†Œκ°€ 더 크닀면 λ‘˜μ˜ 자리λ₯Ό λ°”κΏ”μ€€λ‹€. 그리고 두 번째 μ›μ†Œμ™€ μ„Έ 번째 μ›μ†Œλ₯Ό λΉ„κ΅ν•˜μ—¬ λ§Œμ•½ 두 번째 μ›μ†Œκ°€ 더 크닀면 λ‘˜μ˜ 자리λ₯Ό λ°”κΏ”μ€€λ‹€. μ΄λŸ¬ν•œ λ™μž‘을 (λ§ˆμ§€λ§‰ - 1) 번째의 μ›μ†Œμ™€ λ§ˆμ§€λ§‰ μ›μ†Œλ₯Ό λΉ„ꡐ할 λ•ŒκΉŒμ§€ μˆ˜ν–‰ν•œλ‹€.
  이것이 1νšŒμ „ μˆ˜ν–‰ν•œ 것이닀. μ΄λ ‡κ²Œ 되면 λ§ˆμ§€λ§‰μ— μœ„μΉ˜ν•œ μ›μ†Œκ°€ κ°€μž₯ 큰 μ›μ†Œκ°€ λœλ‹€. 2νšŒμ „μ„ μˆ˜ν–‰ν•  λ•Œ λ§ˆμ§€λ§‰ μ›μ†Œλ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€λ“€μ„ μ •λ ¬ν•΄ μ€€λ‹€. (N - 1) νšŒμ „κΉŒμ§€ μˆ˜ν–‰ν•˜λ©΄ μ •렬이 λ§ˆλ¬΄λ¦¬λœλ‹€.
  μœ„μ˜ 방식은 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 정렬을 ν•˜κ³  μžˆλ‹€. λ§Œμ•½ λŒ€μ†Œλ₯Ό λΉ„κ΅ν•˜μ—¬ λ’€μ˜ μ›μ†Œκ°€ 더 클 λ•Œ μ•žμ˜ μ›μ†Œμ™€ 자리λ₯Ό λ°”κΎΌλ‹€λ©΄ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ 정렬을 ν•  수 μžˆλ‹€.

 

3. κ΅¬ν˜„(JAVA) πŸ₯Ύ

static void bubbleSort(int[] arr) {
    int temp = 0;
    // (μ›μ†Œμ˜ 개수 - 1)번 반볡
    for(int i = 0; i < arr.length - 1; i++) {
        // μΈμ ‘ν•œ 두 μ›μ†Œλ₯Ό λŒ€μ†ŒλΉ„κ΅
        // νšŒμ „ μˆ˜κ°€ 증가함에 λ”°λΌμ„œ 정렬이 된 뒀에 μžˆλŠ” μ›μ†Œλ“€μ€ λΉ„κ΅μ—μ„œ μ œμ™Έ
        for(int j = 1; j < arr.length - i; j++) {
            if(arr[j - 1] < arr[j]) {
                temp = arr[j - 1];
                arr[j - 1] = arr[j];
                arr[j] = temp;
            }
        }
    }
}

 

4. μ‹œκ°„λ³΅μž‘λ„ & κ³΅κ°„λ³΅μž‘λ„ πŸ‘’

1. μ‹œκ°„λ³΅μž‘λ„

  μœ„μ—μ„œ μ‚΄νŽ΄λ΄€λ“―μ΄ 총 (N - 1)번 νšŒμ „ν•˜κ³ , i번째 νšŒμ „μ—μ„œ (N - i)의 연산을 μˆ˜ν–‰ν•œλ‹€. 그러면, μ•„λž˜μ— ν•΄λ‹Ήν•˜λŠ” 수만큼 연산을 μˆ˜ν–‰ν•œλ‹€.

(N - 1) + (N - 2) + (N - 3) + ... + 2 + 1 = N * (N -1) / 2

  λ”°λΌμ„œ, μ‹œκ°„λ³΅μž‘λ„λŠ” O(N^2)이닀.
  정렬이 λ˜μ–΄μžˆλ˜ μ•ˆλ˜μ–΄ 있던 항상 비ꡐλ₯Ό μˆ˜ν–‰ν•˜λ―€λ‘œ μ΅œμ„ , 평균, μ΅œμ•…μ˜ μƒν™©μ—μ„œ λͺ¨λ‘ O(N^2)의 μ‹œκ°„λ³΅μž‘λ„λ₯Ό κ°€μ§„λ‹€.

  μ΅œμ„ (BEST) 평균(AVERAGE) μ΅œμ•…(WORST)
μ‹œκ°„λ³΅μž‘λ„ O(N^2) O(N^2) O(N^2)

2. κ³΅κ°„λ³΅μž‘λ„

  κ³΅κ°„λ³΅μž‘λ„μ˜ κ²½μš° μΆ”가적인 λ°°μ—΄μ„ λ§Œλ“€μ§€ μ•Šκ³  ν•΄λ‹Ή λ°°μ—΄μ—μ„œ κ΅ν™˜μ΄ μ΄λ£¨μ–΄μ§€λ―€λ‘œ O(N)이닀.

 

5. μž₯점 & 단점 πŸ₯Ώ

1. μž₯점

  • μ½”λ“œκ°€ λ§€μš° λ‹¨μˆœν•œλ‹€.
  • λ‹€λ₯Έ λ©”λͺ¨λ¦¬ 곡간을 ν•„μš”λ‘œ ν•˜μ§€ μ•ŠλŠ”λ‹€.

2. 단점

  • μ‹œκ°„λ³΅μž‘λ„κ°€ O(N^2)μ΄λ―€λ‘œ μƒλ‹Ήνžˆ λΉ„νš¨μœ¨μ μ΄λ‹€.
  • 정렬이 λ˜μ–΄μžˆλ”라도 λΉ„ꡐ μ—°μ‚°μ„ μˆ˜ν–‰ν•œλ‹€.

 

ν•΄λ‹Ή 글은 Gyoogleλ‹˜μ˜ κ±°ν’ˆ μ •λ ¬(Bubble Sort)을 μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

 

'πŸ“‚ 자료ꡬ쑰 > μ •λ ¬' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

νž™ μ •λ ¬ (Heap Sort)  (0) 2023.03.12
μœ„μƒ μ •λ ¬(Topology Sort)  (2) 2023.03.07
병합 μ •λ ¬(Merge Sort)  (0) 2023.03.07
μ‚½μž… μ •λ ¬(Insertion Sort)  (0) 2023.03.06
선택 μ •λ ¬(Selection Sort)  (2) 2023.03.04
    'πŸ“‚ 자료ꡬ쑰/μ •λ ¬' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • μœ„μƒ μ •λ ¬(Topology Sort)
    • 병합 μ •λ ¬(Merge Sort)
    • μ‚½μž… μ •λ ¬(Insertion Sort)
    • 선택 μ •λ ¬(Selection Sort)
    Amenable
    Amenable
    CS, μžλ°”, 자료ꡬ쑰, μ•Œκ³ λ¦¬μ¦˜, μŠ€ν”„λ§, μŠ€ν”„λ§ λΆ€νŠΈμ— ν•΄λ‹Ήν•˜λŠ” κ°œλ°œμ— κ΄€ν•œ λ‚΄μš©μ„ κ³΅μœ ν•©λ‹ˆλ‹€.

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”