๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜-์ด๋ก ] ํ€ต ์ •๋ ฌ (Quick Sort)

by Wonit 2019. 11. 23.

ํ€ต ์†ŒํŠธ(Quick Sort)๋ž€?

ํ€ต ์ •๋ ฌ์€ ํ‰๊ท ์ ์œผ๋กœ ๊ฐ€์žฅ ์ข‹์€ ์„ฑ๋Šฅ์„ ๊ฐ€์ ธ ํ˜„์žฅ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

๋ฐ”๋กœ ์˜ˆ๋กœ ์„ค๋ช…์„ ํ•˜์ž๋ฉด

 

์ •๋ ฌํ•  ๋ฐฐ์—ด A={31,11,2,6,9} ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

 

์ด ๋•Œ ๊ธฐ์ค€ ์›์†Œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ทธ ๊ฐ’๋ณด๋‹ค ํฐ ์›์†Œ๋Š” ๋’ค์—, ์ž‘์€ ์›์†Œ๋Š” ์•ž์— ๋ฐฐ์น˜๋ฅผ ํ•˜๋Š” ์‹์œผ๋กœ ์ •๋ ฌ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

  • ๊ธฐ์ค€ ์›์†Œ๋ฅผ ์žก๋Š”๋‹ค.

  • ๊ธฐ์ค€ ์›์†Œ์˜ ์™ผ์ชฝ์€ ๊ธฐ์ค€ ์›์†Œ๋ณด๋‹ค ์ž‘์€ ๊ฐ’, ์˜ค๋ฅธ์ชฝ์€ ๊ธฐ์ค€ ์›์†Œ๋ณด๋‹ค ํฐ ๊ฐ’.

  • ์™ผ์ชฝ์— ๋Œ€ํ•ด์„œ๋„ ์žฌ๊ท€ํ˜ธ์ถœ์„ ์‹คํ–‰ํ•œ๋‹ค. ์˜ค๋ฅธ์ชฝ์— ๋Œ€ํ•ด์„œ๋„ ์žฌ๊ท€ํ˜ธ์ถœ์„ ์‹คํ–‰ํ•œ๋‹ค.

1๋ผ์šด๋“œ

๊ธฐ์ค€ ์›์†Œ๋ฅผ ์žก๋Š”๋‹ค -> ๊ธฐ์ค€์›์†Œ: 9 -> ๊ธฐ์ค€์›์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ A[0]๋ถ€ํ„ฐ ๊ฐ’์„ ๋น„๊ตํ•˜๋ฉฐ ์žฌ๋ฐฐ์น˜ ํ•œ๋‹ค. ->

A={2, 6, 9, 31, 11};

2๋ผ์šด๋“œ

๊ธฐ์ค€ ์›์†Œ๋ฅผ ์žก๋Š”๋‹ค -> ๊ธฐ์ค€์›์†Œ: 11 -> ๊ธฐ์ค€์›์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ A[0]๋ถ€ํ„ฐ ๊ฐ’์„ ๋น„๊ตํ•˜๋ฉฐ ์žฌ๋ฐฐ์น˜ ํ•œ๋‹ค. ->

A={2, 6, 9, 11, 31};

์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๊ณ  ๊ธฐ์ค€ ์›์†Œ๊ฐ€ ๋ฐฐ์—ด์˜ ์›์†Œ๋ฅผ ํ•œ๋ฒˆ์”ฉ ํ›‘๊ณ  ์ง€๋‚˜๊ฐ€๋ฉด ๋๋‚œ๋‹ค.

quickSort(A[], p, r){
    if(p<r) then {
        q <- partition(A, p, r);
        quickSort(A,p,q-1);
        quickSort(A,q+1,r);
    }
}


partition(A[], p, r){
    x <- A[r];
    i <- p - 1
       for j <- p to r-1
        if(A[j] <= x) then A[++i] <-> A[j];

    A[i+1] <-> A[r];
    return i+1;
}

ํ€ต ์†ŒํŠธ(Quick Sort)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„

ํ€ต ์†ŒํŠธ๋Š” ๋ณด๋‹ค์‹ถ์ด ์žฌ๊ท€ํ˜ธ์ถœ์  ํŠน์„ฑ( O(log n))์„ ๊ฐ–๊ณ ์žˆ๋‹ค.

ํ€ต ์†ŒํŠธ(Quick Sort)์˜ ํŠน์ง•

์žฅ์ 
  • ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค

  • ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋‹จ์ 
  • ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•ด์„œ๋Š” ํ€ต ์ •๋ ฌ์˜ ๋ถˆ๊ท ํ˜• ๋ถ„ํ• ์— ์˜ํ•ด ์˜คํžˆ๋ ค ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ๋” ๋งŽ์ด ๊ฑธ๋ฆฐ๋‹ค.

ํ€ต ์†ŒํŠธ(Quick Sort์˜ ์ž๋ฐ” ์ฝ”๋“œ)

๋Œ“๊ธ€