29
コンピュータサイエンス第2 ソート(整列)アルゴリズム3

コンピュータサイエンス第2 ソート(整列)アルゴリズム2merge_sort(a[alen//2 : alen])) クイックソート: 考え方 数列 a をクイックソートで整列

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

mv ~/Downloads/day3 ./ cd day3
)
a1, a2, . . . , an : b1, b2, . . . , bn
b1 ≤ b2 ≤ · · · ≤ bn
8, 3, 1, 4, 6 =⇒ 1, 3, 4, 6, 8 8, 3, 1, 3, 6 =⇒ 1, 3, 3, 6, 8










































merge(a1, . . . , ai , b1, . . . , bj) a1, . . . , ai , b1, . . . , bj :
merge(1, 3, 3, 7, 2, 4, 6, 7) = 1, 2, 3, 3, 4, 6, 7, 7

2.
a 1, 3, 3, 4 1, 3, 3, 4 1, 3, 3, 4 1, 3, 3, 4 b 2, 3, 6, 8 2, 3, 6, 8 2, 3, 6, 8 2, 3, 6, 8 1 1, 2 1, 2, 3

2.
a 1, 3, 3, 4 1, 3, 3, 4 1, 3, 3, 4 1, 3, 3, 4 b 2, 3, 6, 8 2, 3, 6, 8 2, 3, 6, 8 2, 3, 6, 8 1 1, 2 1, 2, 3
a 1, 3, 3, 4 1, 3, 3, 4 b · · · 2, 3, 6, 8 2, 3, 6, 8 2, 3, 6, 8 1, 2, 3, 3, 3 1, 2, 3, 3, 3, 4 1, 2, 3, 3, 3, 4, 6








































merge sort(a1, a2, . . . , an) n ≤ 1 a1, a2, . . . , an n > 1
a1, a2, . . . , an b = a1, a2, . . . , an/2 c = an/2+1, an/2+2, . . . , an

merge(merge sort(b),merge sort(c))
msort(6, 4)
msort(1) msort(2)
1, 2, 3
T (n):
T (1) = 0 T (n) ≈ (n/2 + n/2− 1) + 2T (n/2)
≈ n + 2T (n/2)








































2T (n/2) = 2 n
4T (n/4) = 4 n








































while i >= 0:
if a[i] <= b[j]:
c.append(a[i])
>>> a = [1,2,3,4,5]
>>> a[1:3]
[2, 3]
>>> a[0:5]








































1.
2. b: c:
3. b, c b′, c ′
4. b′ c ′








































: quick sort(a1, a2, . . . , an) n ≤ 1 n > 1
1. a2, . . . , an b: a1 c: a1
2.








































Python: : a1, a2, . . . , ai + b1, b2, . . . , bj = a1, a2, . . . , ai , b1, b2, . . . , bj
>>> [1,3,5,7] + [2,4,6]
>>> [1,3,5,7] + []
>>> a
else:
b = []
c = []
for i in range(1, len(a)): # a a[0] if a[i] < a[0]:
b.append(a[i])








































# n def random_array(n):
>>> decreasing_array(5)
>>> random_array(10)
[0, 0, 4, 1, 7, 2, 9, 5, 9, 9]
>>> random_array(10)








































# sortf mkarray(n) def test_sort(sortf, mkarray, n):
global ncomp
start_time = time.time()
b = sortf(a)
print(f" {n}")
sorted(b) #








































1000

= /









































(a)
...
# def test_bubble_increasing():
test_sort_csv(bubble_sort, increasing_array, 100)
test_sort_csv(bubble_sort, increasing_array, 200)
test_sort_csv(bubble_sort, increasing_array, 300)
day3-2.pdf