3.1. Sorting - 3.1.1 Bubble sort

2024. 1. 13. 23:40ใ†CS - Roadmap.sh/3. Common Algorithms

CS - 3. Common Algorithms - 3.1. Sorting - 3.1.1 Bubble sort

 

๐Ÿ’กSorting algorithms are used to sort data in a collection. Sorting is a very common task in computer science, and it is also a very common interview question. There are many different ways to sort data, and different algorithms have different advantages and disadvantages.

Learn about the sorting algorithms and know the best case/worst case, average complexity of each. Also, learn about the stability of sorting algorithms.

์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ปฌ๋ ‰์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ •๋ ฌ์€ ์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ ๋งค์šฐ ํ”ํ•œ ์ž‘์—…์ด๋ฉฐ, ๋ฉด์ ‘ ์งˆ๋ฌธ์—๋„ ์ž์ฃผ ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜๋งˆ๋‹ค ์žฅ๋‹จ์ ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ๊ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ตœ์ƒ์˜ ๊ฒฝ์šฐ์™€ ์ตœ์•…์˜ ๊ฒฝ์šฐ, ํ‰๊ท  ๋ณต์žก๋„๋ฅผ ํŒŒ์•…ํ•ฉ์‹œ๋‹ค. ๋˜ํ•œ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์•ˆ์ •์„ฑ์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ด…์‹œ๋‹ค.

 

 

Bubble sort

๐Ÿ’ก Bubble sort is a simple sorting algorithm that repeatedly steps through the list, compares adjacent elements and swaps them if they are in the wrong order. The pass through the list is repeated until the list is sorted.

๋ฒ„๋ธ” ์ •๋ ฌ์€ ๋ชฉ๋ก์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ†ต๊ณผํ•˜๋ฉด์„œ ์ธ์ ‘ํ•œ ์š”์†Œ๋ฅผ ๋น„๊ตํ•˜๊ณ  ์ˆœ์„œ๊ฐ€ ์ž˜๋ชป๋œ ๊ฒฝ์šฐ ๊ต์ฒดํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋ชฉ๋ก์ด ์ •๋ ฌ๋  ๋•Œ๊นŒ์ง€ ๋ชฉ๋ก์„ ํ†ต๊ณผํ•˜๋Š” ๊ณผ์ •์ด ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.

 

๋ฒ„๋ธ” ์ •๋ ฌ์€ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋กœ,

์ธ์ ‘ํ•œ ๋‘ ์›์†Œ๋ฅผ ๋น„๊ตํ•ด ํ•„์š”์— ๋”ฐ๋ผ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

 

์™œ ์ด๋ฆ„์ด ๋ฒ„๋ธ”์ผ๊นŒ์š”?

ํฐ ๊ฐ’์ด ๋งˆ์น˜ '๋ฒ„๋ธ”'์ฒ˜๋Ÿผ ๋ฐฐ์—ด์˜ ๋์œผ๋กœ ๋– ์˜ค๋ฅด๋Š” ๋ชจ์Šต์„ ๋ณด์—ฌ์ฃผ๋Š” ์ •๋ ฌ ๋ฐฉ์‹์ด๊ธฐ ๋–„๋ฌธ์ž…๋‹ˆ๋‹ค.

 

๋ฒ„๋ธ” ์ •๋ ฌ์˜ ๋™์ž‘์€

1. ๋ฐฐ์—ด์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ์ธ์ ‘ํ•œ ๋‘ ์›์†Œ๋ฅผ ๋น„๊ต

2. ๋งŒ์•ฝ ์•ž์˜ ์›์†Œ๊ฐ€ ๋’ค์˜ ์›์†Œ๋ณด๋‹ค ํฌ๋‹ค๋ฉด, ๋‘ ์›์†Œ์˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝ

3. ๋ฐฐ์—ด์˜ ๋๊นŒ์ง€ ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ€์žฅ ํฐ ์›์†Œ๊ฐ€ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰์— ์œ„์น˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

4. ๊ฐ€์žฅ ํฐ ์›์†Œ๊ฐ€ ์ •๋ ฌ๋œ ์œ„์น˜์— ์žˆ์œผ๋ฏ€๋กœ, ์ด์ œ๋Š” ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์›์†Œ์— ๋Œ€ํ•ด ๋™์ผํ•œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

5. ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์›์†Œ๊ฐ€ ์ •๋ ฌ๋  ๋–„๊นŒ์ง€ ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

 

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

240116 ์˜ˆ์‹œ ์ถ”๊ฐ€

A_list = [8,7,4,18,19,355,1,98]
bubble_sort(A_list)

 

 

์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ์•ž์—์„œ๋ถ€ํ„ฐ ๋น„๊ตํ•˜๋ฉฐ ํฐ๊ฒƒ์„ ๋’ค๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

 

 

 

์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n^2)์ž…๋‹ˆ๋‹ค.

 

 

 

 

๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งŽ์ง€ ์•Š๊ฑฐ๋‚˜, ์–ด๋Š์ •๋„ ์ •๋ ฌ์ด ๋œ ๋ฐ์ดํ„ฐ๋ผ๋ฉด ํšจ๊ณผ์ ์ด์ง€๋งŒ,

์–‘์ด ๋งŽ๊ฑฐ๋‚˜ ๋ฌด์ž‘์œ„๋กœ ๋ฐฐ์—ด๋œ ๊ฒฝ์šฐ์—๋Š” ํ€ต ์ •๋ ฌ, ๋ณ‘ํ•ฉ์ •๋ ฌ๋“ฑ์ด ๋” ํšจ์œจ์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž…๋‹ˆ๋‹ค.

728x90

'CS - Roadmap.sh > 3. Common Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

3.1. Sorting - 3.1.6 Merge Sort  (0) 2024.01.20
3.1 Sorting - 3.1.5 Quick Sort  (0) 2024.01.16
3.1 Sorting - 3.1.4 Heap Sort  (0) 2024.01.15
3.1. Sorting - 3.1.3 Insertion Sort  (0) 2024.01.15
3.1. Sorting - 3.1.2 Selection Sort  (1) 2024.01.14