initial commit
This commit is contained in:
124
reviews/R1.md
Normal file
124
reviews/R1.md
Normal 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$
|
||||
Reference in New Issue
Block a user