[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ณผ์ œ 4. 1000๋งŒ๊ฐœ ๋ฐ์ดํ„ฐ ํ€ต ์ •๋ ฌ ์‹œ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 3. 28. 10:42

Quick sort '์•Œ๊ณ ๋ฆฌ์ฆ˜' ์ „๊ณต ์ˆ˜์—…์‹œ๊ฐ„์— ๋‚˜์˜จ ๊ณผ์ œ์ธ '1000๋งŒ๊ฐœ ๋ฐ์ดํ„ฐ ์ •๋ ฌ ํ›„ ํ•ด์‹œ ๊ฐ’ ๊ตฌํ•˜๊ธฐ'๋ฅผ ํ•˜๋ฉด์„œ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ด๋‹ค. ๋ถ„ํ•  ์ •๋ณต ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ๊ตฌํ˜„๋˜๋Š” ์ •๋ ฌ ๋ฐฉ๋ฒ• ์‹œ๊ฐ„ ๋ณต์žก๋„ ์ตœ์•… : O(n^2) ํ‰๊ท  : O(nlogn) ์„ค๊ณ„๋ฅผ ํ†ตํ•ด์„œ ๊ฐœ์„  ๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„ ๊ตฌํ˜„ ๊ณผ์ • pivot์„ ์„ ํƒํ•œ๋‹ค. ์œ„์ชฝ ํฌ์ธํ„ฐ๊ฐ€ ๋‚ฎ์€ ์ชฝ์œผ๋กœ ๊ฐ€๋ฉด์„œ ํ”ผ๋ฒ—๋ณด๋‹ค ์ž‘์€ ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค. ์•„๋ž˜์ชฝ ํฌ์ธํ„ฐ๊ฐ€ ๋†’์€ ์ชฝ์œผ๋กœ ๊ฐ€๋ฉด์„œ ํ”ผ๋ฒ—๋ณด๋‹ค ํฐ ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค. ๋‘ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์š”์†Œ๋ฅผ ๊ตํ™˜ํ•œ๋‹ค. 2-4๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค. ๋‘ ํฌ์ธํ„ฐ๊ฐ€ ๊ต์ฐจํ•œ๋‹ค๋ฉด ํ˜„์žฌ ํ”ผ๋ฒ—๊ณผ ํ•ด๋‹น ์œ„์น˜์˜ ๊ฐ’์„ ๊ตํ™˜ํ•œ๋‹ค. ํ”ผ๋ฒ—๊ณผ ํ”ผ๋ฒ—๋ณด๋‹ค ์ž‘์€ section, ํ”ผ๋ฒ—๋ณด๋‹ค ํฐ section์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ section์— ๋Œ€ํ•ด 1-5๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. section์˜ ํฌ๊ธฐ๊ฐ€ 0 ๋˜๋Š” 1์ด๋ฉด ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ณผ์ œ 3. Tony Hoare :: QuickSort ๋…ผ๋ฌธ ํ•ด์„ํ•˜๊ธฐ
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 3. 26. 16:56

QuickSort ๋…ผ๋ฌธ brief Part One: Theory ์ด sorting์€ ๋‘ ๊ฐœ์˜ ๊ฐ„๋‹จํ•œ ๋ณด์กฐ๋ฌธ์ œ๋กœ ๋‚˜๋‰˜์–ด ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฐ ๋ฌธ์ œ๋Š” ์ด๋ฏธ ์•Œ๋ ค์ง„ ๋ฐฉ์‹์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ๋‹ค. Partition : key๊ฐ’์„ dividing line์— ๋”ฐ๋ผ ์œ„ ์•„๋ž˜๋กœ ๋‚˜๋ˆ„์–ด ์ด๋ถ„ํ•˜๋Š” ๊ฒƒ ์‹ค์ œ๋กœ ์ด dividing line์€ ํ”์น˜ ์•Š๊ณ , ์žˆ๋‹ค ํ• ์ง€๋ผ๋„ ์ฐพ๊ธฐ ํž˜๋“ ๋ฐ dividing line์ด ์กด์žฌํ•˜๊ณ  ๊ทธ๊ฒƒ์˜ ์œ„์น˜๋งŒ ์•ˆ๋‹ค๋ฉด item๋“ค์„ ์žฌ์ •๋ ฌํ•˜๊ธฐ๋Š” ์‰ฌ์›Œ์ง„๋‹ค. partition ๊ณผ์ • ์ •๋ ฌ๋˜์–ด์•ผํ•˜๋Š” ์•„์ดํ…œ์˜ ํ‚ค ์ค‘ ํŠน์ • ํ‚ค๋ฅผ ๊ณ ๋ฅธ๋‹ค. ์ด ํ‚ค๋Š” bound ๋ผ ๋ถˆ๋ฆฐ๋‹ค. dividing line ์•„๋ž˜์—๋Š” bound๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ key๊ฐ’์ด, ์œ„์ชฝ์—๋Š” ํฐ key ๊ฐ’์ด ์˜ค๊ฒŒ ํ•œ๋‹ค. dividing line์˜ ์œ„์น˜๋Š” ๋ฏธ๋ฆฌ ์•Œ ํ•„์š”..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ณผ์ œ 2. 1000๋งŒ๊ฐœ ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ์ •๋ ฌ ์‹œ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 3. 25. 20:01

/* 2020-03-19 ์šฐํฌ์€ ์‚ฝ์ž…์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ */ #define _CRT_SECURE_NO_WARNINGS #include #include #include #include int buffer[10000000]; // ์ „์—ญ ๋ณ€์ˆ˜๋กœ ๋„ฃ์–ด์•ผ stack overflow๊ฐ€ ๋‚˜์ง€ ์•Š์Œ void fileOpen() { FILE *fp = fopen("d://algorithm/unsorted10000000.txt", "r"); int i = 0; int tmp = 0; if (fp == NULL) { printf("ํŒŒ์ผ์„ ์—ด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.\n"); } while (fscanf(fp, "%d ", &tmp)!=EOF) { buffer[i++] = tmp; } fclose(fp); } void insertSortin..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ณผ์ œ 1. ์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ณ„์‚ฐ :: ๊ฐ ์‹œ๊ฐ„ ๋ณต์žก๋„์— ํ•ด๋‹นํ•˜๋Š” ์†Œ์š”์‹œ๊ฐ„์„ ๊ตฌํ•ด๋ณด์ž
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 3. 25. 19:52

์ฒซ๋ฒˆ์งธ ๊ณผ์ œ์ด๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ f(n)์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์†Œ์š”์‹œ๊ฐ„์ด 1 nanosecond == 10^(-9) second ์ด๋ผ๊ณ  ํ•  ๋•Œ, ์™ผ์ชฝ์— ํ‘œ์‹œ๋œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์œ„์ชฝ์˜ ์‹œ๊ฐ„ ๋‚ด์— ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์™„๋ฃŒ๋˜๋ ค๋ฉด ์ตœ๋Œ€๋กœ ์–ด๋–ค N๊นŒ์ง€ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์„์ง€ ์•Œ์•„๋ณด์ž. ๋Œ€ํ‘œ๋กœ ํ•˜๋‚˜๋ฅผ ๊ณ„์‚ฐํ•ด๋ณด๋ฉด 1sec๋Š” 10^(9) nanosec ์ด๋ฏ€๋กœ n^2์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ n^2 = 10^(9) ๋กœ ๋‘๊ณ  ํ’€๋ฉด 1sec ๋งŒ์— ๊ณ„์‚ฐ๋  ์ˆ˜ ์žˆ๋Š” n ๊ฐ’์ด ๋‚˜์˜จ๋‹ค. n ๊ฐ’์€ ๋ชจ๋‘ ์ •์ˆ˜๋กœ ๊ฐ€์ •ํ•˜์˜€๋‹ค.

[python] ์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ ๊ตฌํ˜„ํ•˜๊ธฐ (segment tree) - ์ตœ์†Œ๊ฐ’ ๊ตฌํ•˜๊ธฐ
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 3. 15. 22:39

์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ https://www.acmicpc.net/blog/view/9 ๋ฐฑ์ค€๋‹˜ ๊ธ€ ๋ฐฐ์—ด ํฌ๊ธฐ ๊ฒฐ์ • ์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ C++์˜ ๊ฒฝ์šฐ, vector ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ python์œผ๋กœ ๊ตฌํ˜„ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋˜์–ด์•ผ ํ• ์ง€ ๊ฐ€๋Š ํ•˜๊ธฐ ์œ„ํ•ด ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•ด๋ณด์ž. 2์˜ ์ œ๊ณฑ ์ˆ˜๊ฐ€ ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ์ˆ˜(n)๋กœ ์ฃผ์–ด์ง„๋‹ค๋ฉด ( ๋ถ„์„ํ•ด์•ผํ•  data ๊ฐฏ์ˆ˜๊ฐ€ 2์˜ ์ œ๊ณฑ ์ˆ˜๋ผ๋ฉด ) ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค 1/2์”ฉ ์ค„์–ด๋‚˜๊ฐ€๋ฏ€๋กœ log(n)์ด ํ•„์š”ํ•œ ์ด ๋‹จ๊ณ„(ํ™”์‚ดํ‘œ)๊ฐ€ ๋˜๊ณ  ์ „์ฒด ์ธต์˜ ๊ฐฏ์ˆ˜, ์ฆ‰ ๋†’์ด(h)๋Š” log(n)+1์ด ๋œ๋‹ค. ์ตœ์ƒ์œ„ ๋…ธ๋“œ๋ถ€ํ„ฐ 2^(0)๊ฐœ์˜ ๋…ธ๋“œ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ์ธต์ด ์ฆ๊ฐ€ํ•  ์ˆ˜๋ก 2์˜ ์ง€์ˆ˜ ๋˜ํ•œ ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฝ‰์ฐฌ ์ด์ค‘ ํŠธ๋ฆฌ(full binary tree)์˜ ์ด ๋…ธ๋“œ ..