๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“š Algorithm/Algorithm Note

์•Œ๊ณ ๋ฆฌ์ฆ˜ - Sort ์ •๋ ฌ (Selection sort, Insertion sort, Bubble sort), Python ์ฝ”๋“œ

Sort (์ •๋ ฌ)

n๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ๊ธฐ์ค€์— ๋งž๊ฒŒ ์ •๋ ฌํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

Sort ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ข…๋ฅ˜

  1. Selection sort
  2. Insertion sort
  3. Bubble sort
  4. Merge sort
  5. Quick sort

๊ธฐ์ดˆ์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํ‰๊ท ์ ์œผ๋กœ O(n^2)์˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๋Š” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

- Selection sort (์„ ํƒ์ •๋ ฌ)

- Insertion sort (์‚ฝ์ž…์ •๋ ฌ)

- Bubble sort (๋ฒ„๋ธ”์ •๋ ฌ)

 

๊ณ ๊ธ‰ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 

ํ‰๊ท ์ ์œผ๋กœ O(nlogn)์˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๋Š” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

- Merge sort (๋ณ‘ํ•ฉ์ •๋ ฌ)

- Quick sort (ํ€ต์ •๋ ฌ)

- Heap sort (ํž™์ •๋ ฌ)

 

 

Selection sort (์„ ํƒ์ •๋ ฌ)

- ์ œ์ž๋ฆฌ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

- ํ•ด๋‹น ์ˆœ์„œ์— ์›์†Œ๋ฅผ ๋„ฃ์„ ์œ„์น˜๋Š” ์ด๋ฏธ ์ •ํ•ด์ ธ ์žˆ๊ณ , ์–ด๋–ค ์›์†Œ๋ฅผ ๋„ฃ์„์ง€ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

[๊ณผ์ •]

  1. ์ฃผ์–ด์ง„ ๋ฐฐ์—ด ์ค‘์—์„œ ์ตœ์†Œ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.
  2. ๊ทธ ๊ฐ’์„ ๋งจ ์•ž์— ์œ„์น˜ํ•œ ๊ฐ’๊ณผ ๊ต์ฒดํ•œ๋‹ค.
  3. ๋งจ ์ฒ˜์Œ ์œ„์น˜๋ฅผ ๋บ€ ๋‚˜๋จธ์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ต์ฒดํ•œ๋‹ค.
  4. ํ•˜๋‚˜์˜ ์›์†Œ๋งŒ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ์œ„์˜ 1~3 ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

Selection sort ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ง•

์žฅ์  : ์ž๋ฃŒ ์ด๋™ ํšŸ์ˆ˜๊ฐ€ ๋ฏธ๋ฆฌ ๊ฒฐ์ •๋œ๋‹ค.

๋‹จ์  : ์•ˆ์ „์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์Œ

 

 

Python์œผ๋กœ ๋‚˜ํƒ€๋‚ธ Selection sort

#best : n^2
#avg : n^2
#worst : n^2
def selection_sort(arr) :
    for i in range(len(arr)-1) :
        min_idx = i
        for j in range(i+1, len(arr)) :
            if arr[j] < arr[min_idx] :
                min_idx = j
        arr[i], arr[min_idx] = arr[min_idx], arr[i]

 

 

 

 

Insertion sort (์‚ฝ์ž…์ •๋ ฌ)

- ์ž๋ฃŒ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์•ž์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐฐ์—ด ๋ถ€๋ถ„๊ณผ ๋น„๊ตํ•˜์—ฌ, ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„ ์‚ฝ์ž…ํ•˜๋ฉด์„œ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

- ๋‘ ๋ฒˆ์งธ ์ž๋ฃŒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๊ทธ ์•ž์˜ ์ž๋ฃŒ๋“ค๊ณผ ๋น„๊ตํ•˜๋ฉฐ ์‚ฝ์ž… ์œ„์น˜๋ฅผ ์ง€์ •ํ•œ๋‹ค. 

- ๋‘ ๋ฒˆ์งธ ์ž๋ฃŒ๋Š” ์ฒซ ๋ฒˆ์งธ ์ž๋ฃŒ, ์„ธ ๋ฒˆ์งธ ์ž๋ฃŒ๋Š” ๋‘ ๋ฒˆ์งธ์™€ ์ฒซ ๋ฒˆ์งธ ์ž๋ฃŒ, ๋„ค ๋ฒˆ์งธ ์ž๋ฃŒ๋Š” ์„ธ ๋ฒˆ์งธ, ๋‘ ๋ฒˆ์งธ, ์ฒซ ๋ฒˆ์งธ ์ž๋ฃŒ์™€ ๋น„๊ตํ•œ ํ›„ ์ž๋ฃŒ๊ฐ€ ์‚ฝ์ž…๋  ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋‹ค. ์ž๋ฃŒ๊ฐ€ ์‚ฝ์ž…๋  ์œ„์น˜๋ฅผ ์ฐพ์•˜๋‹ค๋ฉด ๊ทธ ์œ„์น˜์— ์ž๋ฃŒ๋ฅผ ์‚ฝ์ž…ํ•˜๊ธฐ ์œ„ํ•ด ์ž๋ฃŒ๋ฅผ ํ•œ ์นธ์”ฉ ๋’ค๋กœ ์ด๋™์‹œํ‚จ๋‹ค.

 

Insertion sort ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ง•

์žฅ์  : ์•ˆ์ „ํ•œ ์ •๋ ฌ ๋ฐฉ๋ฒ•์ด๋ฉฐ, ๋ ˆ์ฝ”๋“œ๊ฐ€ ์–ด๋Š์ •๋„ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ํšจ์œจ์ ์ด๋‹ค. 

๋‹จ์  : ๋ ˆ์ฝ”๋“œ์˜ ์–‘์ด ๋งŽ๊ฑฐ๋‚˜, ํฌ๊ธฐ๊ฐ€ ํด ๊ฒฝ์šฐ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค. 

 

 

Python์œผ๋กœ ๋‚˜ํƒ€๋‚ธ Insertion sort

#best : n
#avg : n^2
#worst : n^2

def insertion_sort(arr) :
    for end in range(1, len(arr)) :
        for i in range(end, 0, -1) :
            if(arr[i-1] > arr[i]) :
                arr[i-1], arr[i] = arr[i], arr[i-1]

 

 

 

Bubble sort (๋ฒ„๋ธ”์ •๋ ฌ)

- ์„œ๋กœ ์ธ์ ‘ํ•œ ๋‘ ์›์†Œ๋ฅผ ๋น„๊ตํ•˜๋ฉฐ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

- ์™ผ์ชฝ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์ด์›ƒํ•œ ์Œ๋“ค์„ ๋น„๊ตํ•ด ๋‚˜๊ฐ„๋‹ค. ์ˆœ์„œ๋Œ€๋กœ ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ์ž๋ฆฌ๋ฅผ ๋ฐ”๊พผ๋‹ค. 

- 1ํšŒ์ „์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋‚˜๋ฉด ๊ฐ€์žฅ ํฐ ์ž๋ฃŒ๊ฐ€ ๋งจ ๋’ค๋กœ ์ด๋™ํ•˜๋ฏ€๋กœ 2ํšŒ์ „์—์„œ๋Š” ๋งจ ๋์— ์žˆ๋Š” ์ž๋ฃŒ๋Š” ์ •๋ ฌ์—์„œ ์ œ์™ธ๋œ๋‹ค. ์ด๋ฅผ ๋ฐ˜๋ณตํ•จ

 

Bubble sort ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ง•

์žฅ์  : ๊ตฌํ˜„์ด ๋งค์šฐ ๊ฐ„๋‹จํ•จ

๋‹จ์  : ํ•˜๋‚˜์˜ ์š”์†Œ๊ฐ€ ๊ฐ€์žฅ ์™ผ์ชฝ์—์„œ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐฐ์—ด์—์„œ ๋ชจ๋“  ๋‹ค๋ฅธ ์š”์†Œ๋“ค๊ณผ ๊ตํ™˜๋˜์–ด์•ผ ํ•œ๋‹ค.

 

 

Python์œผ๋กœ ๋‚˜ํƒ€๋‚ธ Bubble sort 

#best : n^2
#avg : n^2
#worst : n^2
def bubble_sort(arr, n) :
    for i in range(n-1, 0) :
        for j in range(i) :
            if arr[j] > arr[j+1] :
                arr[j], arr[j+1] = arr[j+1], arr[j]

 

 

 

 

 

 

 

 

 

 

[ํ€ต, ๋ณ‘ํ•ฉ ์ •๋ ฌ]

2023.04.05 - [์•Œ๊ณ ๋ฆฌ์ฆ˜] - ์•Œ๊ณ ๋ฆฌ์ฆ˜ - Sort ์ •๋ ฌ (Selection sort, Insertion sort, Bubble sort), Python ์ฝ”๋“œ

 

์•Œ๊ณ ๋ฆฌ์ฆ˜ - Sort ์ •๋ ฌ (Selection sort, Insertion sort, Bubble sort), Python ์ฝ”๋“œ

Sort (์ •๋ ฌ) n๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ๊ธฐ์ค€์— ๋งž๊ฒŒ ์ •๋ ฌํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ Sort ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ข…๋ฅ˜ Selection sort Insertion sort Bubble sort Merge sort Quick sort ๊ธฐ์ดˆ์ ์ธ ์ •

mcrkgus.tistory.com

 

 

728x90