initial commit

This commit is contained in:
2025-09-15 02:11:16 +09:00
commit f6165fbd86
19 changed files with 7458 additions and 0 deletions

124
reviews/R1.md Normal file
View File

@@ -0,0 +1,124 @@
# Review 1
<style>
html {
-webkit-print-color-adjust: exact;
}
</style>
* Hajin Ju, 2024062806
## Problem 1
1
Fill in the blank entries when the numbers are sorted by insertion sort in non-decreasing order.
```python { cmd, output='html' hide }
from bs4 import BeautifulSoup as bs
data = [
[(7, False), (4, False), (3, False), (6, False), (8, False), (1, False), (2, False)],
[(7, True), (4, False), (3, False), (6, False), (8, False), (1, False), (2, False)],
[(4, True), (7, True), None, None, None, None, None],
]
soup = bs("<div></div>", 'lxml')
td_style = "border: 1px solid black; padding: 10px; text-align: center; font-size: 1.2rem; min-width: 3rem;"
td_style_high = "border: 1px solid black; padding: 10px; text-align: center; font-size: 1.2rem; min-width: 3rem; background-color: lightgray;"
for i in range(3):
table = soup.new_tag("table")
table["style"] = "display: flex; justify-content: center;"
tr = soup.new_tag("tr")
for d in data[i]:
td = soup.new_tag("td")
if d:
td['style'] = td_style_high if d[1] else td_style
td.string = str(d[0]) if d else " "
else:
td["style"] = td_style
td.string = " "
tr.append(td)
table.append(tr)
soup.div.append(table)
print(soup.prettify())
```
### Solution 1
```python { cmd, output='html', hide }
from bs4 import BeautifulSoup as bs
data = [
[(7, False), (4, False), (3, False), (6, False), (8, False), (1, False), (2, False)],
]
# insertion sorting process
for i in range(len(data[0])):
cur = data[-1].copy()
cur[i] = (cur[i][0], True)
key = cur[i][0]
while i > 0:
i -= 1
if key >= cur[i][0]:
break
else:
temp = cur[i + 1]
cur[i + 1] = cur[i]
cur[i] = temp
data.append(cur)
soup = bs("<div></div>", 'lxml')
td_style = "border: 1px solid black; padding: 10px; text-align: center; font-size: 1.2rem; min-width: 3rem;"
td_style_high = "border: 1px solid black; padding: 10px; text-align: center; font-size: 1.2rem; min-width: 3rem; background-color: lightgray;"
for i in range(len(data)):
table = soup.new_tag("table")
table["style"] = "display: flex; justify-content: center;"
tr = soup.new_tag("tr")
for d in data[i]:
td = soup.new_tag("td")
if d:
td['style'] = td_style_high if d[1] else td_style
td.string = str(d[0]) if d else " "
else:
td["style"] = td_style
td.string = " "
tr.append(td)
table.append(tr)
soup.div.append(table)
print(soup.prettify())
```
## Problem 2
Fill in the blanks with proper number of iterations.
### Solution 2
```
// INSERTION-SORT(A) // cost // number of iterations
for j = 2 to n // c1 // n - 1
key = A[j] // c2 // n - 1
i = j - 1 // c3 // n - 1
while i > 0 and A[i] > key // c4 // tj
A[i + 1] = A[i] // c5 // tj - 1
i = i - 1 // c6 // tj - 1
A[i + 1] = key // c7 // n - 1
```
## Problem 3
What is the running time of insertion sort when the input size is $n$?
### Solution 3
* best case: $\theta(n)$ $t_j = 1$
* worst case: $\theta(n^2)$ $t_j = j$