1. ์„ ํƒ์ •๋ ฌ:

 

๋งค๋ฒˆ ๊ฐ€์žฅ ์ž‘์€๊ฒƒ์„ ์„ ํƒํ•ด์„œ ์ •๋ ฌ ์•ˆ๋œ ๋ถ€๋ถ„์˜ ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ์œ„์น˜์— ์ž๋ฆฌ์‹œํ‚จ๋‹ค.

                  tip) ํŒŒ์ด์ฌ์˜ ์Šค์™€์ดํ”„๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ด์šฉํ•˜์ž

         

-์‹œ๊ฐ„ ๋ณต์žก๋„: O(n^2)

 

 

2. ์‚ฝ์ž…์ •๋ ฌ:

 

์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ์— ๋ฐ์ดํ„ฐ ํ•˜๋‚˜๋ฅผ ์‚ฝ์ž… ํ• ๋•Œ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์„ ์ฐฉ์•ˆํ•œ๋‹ค๋Š” ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค.

                    ํ˜„์žฌ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๋Š” ์ธ๋ฐ์Šค ์•ž๋ถ€๋ถ„์€ ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค๊ณ  ๋ณธ๋‹ค(์‹ค์ œ๋กœ ์ •๋ ฌ ๋˜์–ด ์žˆ์„๊ฒƒ์ด๋‹ค.). ์ธ๋ฑ์Šค๋ฅผ ์ ์ฐจ ์ฆ๊ฐ€ ์‹œํ‚ค๋ฉด์„œ 

                    ์•ž์˜ ๋ฐฐ์—ด์— ์‚ฝ์ž…ํ•˜๋Š” ์‹์œผ๋กœ ๊ฑฐ์˜ ์ •๋ ฌ๋œ  ๋ฆฌ์ŠคํŠธ์— ํšจ๊ณผ์ ์ด๋‹ค.

       

- ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(n^2),   ๊ฑฐ์˜ ์ •๋ ฌ๋˜์–ด ์ž‡์„ ๊ฒฝ์šฐ -> O(n)

 

 

3. ํ€ต์ •๋ ฌ

 

์žฌ๊ท€์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. 3๊ฐ€์ง€ ํฌ์ธํŠธ๋งŒ ๊ธฐ์–ตํ•˜์ž

1. ํ”ผ๋ฒ— ์ •ํ•˜๊ธฐ

2. ์™ผ์ชฝ ๋ถ€๋ถ„ ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„ ๊ฐ ๋‘ ์ง€์ ์—์„œ ์ถœ๋ฐœํ•˜์—ฌ ์™ผ์ชฝ ๋ถ€๋ถ„์—์„œ ์‹œ์ž‘ํ–ˆ์œผ๋ฉด ํ”ผ๋ฒ—๋ณด๋‹ค ํฐ๊ฐ’์„ ์ฐพ๊ณ  ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„์—์„œ ์‹œ์ž‘ํ–ˆ์œผ๋ฉด ํ”ผ๋ฒ—๋ณด๋‹ค ์ž‘์€๊ฐ’ ์ฐพ๊ธฐ

3. 2๋ฒˆ์—์„œ ์ฐพ์€ ๊ฐ’์„ ์„œ๋กœ ์Šค์™€์ดํ”„ ํ•˜๋ฉด์„œ ์ง„ํ–‰ ํ•˜๋‹ค๊ฐ€ ์„œ๋กœ ์—‡๊ฐˆ๋ฆฌ๋ฉด '๋ถ„ํ• ์™„๋ฃŒ'

์žฌ๊ท€์‹์œผ๋กœ ํ”ผ๋ฒ— ์™ผ์ชฝ ๋ถ€๋ถ„์„ ํ€ต์†ŒํŠธ ํ•˜๊ณ  ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„์„ ํ€ต์†ŒํŠธ ํ•œ๋‹ค. ํƒˆ์ถœ ์กฐ๊ฑด์€ ๋ฆฌ์ŠคํŠธ ๊ธธ์ด๊ฐ€ 1 ์ดํ•˜๋ฉด ํƒˆ์ถœ

 

์ด๋Š” ํŒŒ์ด์ฌ์œผ๋กœ ์—„์ฒญ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฑ…์— ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณด์ด๋ฉด

 

array = [5,7,0,9,3,1,6,2,4,8]

def quick_sort(array):
	if (len(array) <= 1):
    	return
    
    pivot = array[0]
    tail = array[1:]
    
    left_side = [x for x in tail if x <= pivot]
    right_side = [x for x in tail if x > pivot]
    
    return quick_sort(left_side) + [pivot] + quick_sort(right_side)
    
 
 print(quick_sort(array))

                    

-์‹œ๊ฐ„ ๋ณต์žก๋„: O(nlogn)

 

 

4. ๊ณ„์ˆ˜ ์ •๋ ฌ:

 

ํŠน์ •ํ•œ ์กฐ๊ฑด์ผ ๋•Œ๋งŒ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์ง€๋งŒ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•œ๋‹ค. 

๋งŒ์ผ array์˜ ์ˆซ์ž์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๊ฐ€ n ์ด๋ผ๋ฉด ์ธ๋ฑ์Šค n์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์„๋งŒํ•œ ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋‹ค(ํฌ๊ธฐ: n+1).

๊ทธ ๋‹ค์Œ์— ๋ช‡๋ฒˆ ์ˆซ์ž๊ฐ€ ๋‚˜์™”๋Š”์ง€ ์นด์šดํŠธ ํ•ด์„œ ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค. ๊ทธ๋‹ค์€ ์นด์šดํ„ฐ๋ฅผ ์ €์žฅํ•œ ๋ฐฐ์—ด์„ ๋ณด๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ทธ๊ฒŒ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. 

๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜์ง€๋งŒ ๋งŒ์ผ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์€ ์ˆซ์ž๊ฐ€ 0๊ณผ 999999 ๋‹จ ๋‘๊ฐœ๋ฅผ ์ •๋ ฌ ํ•˜๊ณ ์ž ํ•œ๋‹ค ํ•ด๋„ ์นด์šดํŠธ๋ฅผ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด์•ผํ•  ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” 1000000์ผ ๊ฒƒ์ด๋‹ค. ์ฆ‰ ๊ณต๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋งค์šฐ ๋†’๋‹ค. ํ•˜์ง€๋งŒ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ๋“ฑ์žฅ ํ•  ๋•Œ์—๋Š” ํšจ๊ณผ์ ์ด๋‹ค.

 

5. ํŒŒ์ด์ฌ ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ:

 

1. ex) result = sorted(array)

     -๋ณ„๋„์˜ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ ๊ฐ์ฒด๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค

     -์ง‘ํ•ฉ ์ž๋ฃŒํ˜•์ด๋‚˜ ๋”•์…”๋„ˆ๋ฆฌ ์ž๋ฃŒํ˜•์„ ์ž…๋ ฅ ๋ฐ›์•„๋„ ๊ฒฐ๊ณผ๋Š” ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.

 

2. ex) array.sort()

      -๋ณ„๋„์˜  ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š๊ณ  ๋‚ด๋ถ€ ์›์†Œ๊ฐ€ ๋ฐ”๋กœ ์ •๋ ฌ๋œ๋‹ค.

 

3. sort() ๋‚˜ sorted()์—์„œ key ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฌด์—‡์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•  ๊ฒƒ์ธ์ง€๋ฅผ ์ • ํ•  ์ˆ˜ ์žˆ๋‹ค.

      -  ๋”ฐ๋กœ ํ•จ์ˆ˜๋ฅผ ์„ค์ • ํ•  ์ˆ˜ ์žˆ๊ณ , ๋˜๋Š” ๋žŒ๋‹ค์‹์„ ์ด์šฉํ•œ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„  ๋žŒ๋‹ค์‹์ด ๋˜๊ฒŒ ํŽธํ•˜๋‹ค.

 

6. ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์˜ ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฌธ์ œ ์œ ํ˜•

 

1) ์ •๋ ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ

 

2) ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์›๋ฆฌ์— ๋Œ€ํ•ด์„œ ๋ฌผ์–ด๋ณด๋Š” ๋ฌธ์ œ

 

3) ๋” ๋น ๋ฅธ ์ •๋ ฌ์ด ํ•„์š”ํ•œ ๋ฌธ์ œ : ํ€ต ์ •๋ ฌ ๊ธฐ๋ฐ˜์˜ ์ •๋ ฌ ๊ธฐ๋ฒ•์œผ๋กœ๋Š” ํ’€ ์ˆ˜ ์—†์œผ๋ฉฐ ๊ณ„์ˆ˜ ์ •๋ ฌ ๋“ฑ์˜ ๋‹ค๋ฅธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•˜๊ฑฐ๋‚˜ ๋ฌธ์ œ์—์„œ              

                                                ๊ธฐ์กด์— ์•Œ๋ ค์ง„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌ์กฐ์ ์ธ ๊ฐœ์„ ์„ ๊ฑฐ์ณ์•ผ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ