teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

誤字修正

2020/07/03 02:48

投稿

nico25
nico25

スコア830

answer CHANGED
@@ -1,13 +1,11 @@
1
- ### Step 1. Pythonの sort 関数 vs クイックソート,マージソート,ヒープソート
1
+ ### Step 1. sort 関数 vs クイックソート,マージソート,ヒープソート
2
2
 
3
3
  #### Step 1.1. アルゴリズム
4
4
 
5
5
  Pythonの sort 関数は、KojiDoi 様が書かれている通り TimSort というアルゴリズムで実装されています。このアルゴリズムは、クイックソート, マージソート, ヒープソート, 挿入ソートを混ぜ込んだものです。
6
6
 
7
- なぜ、混ぜ込むと速くなるのか?ということなのですが、それは各ソートアルゴリズムごとに得意な「データの形式」が異なるからです。
7
+ なぜ、混ぜ込むと速くなるのか?ということなのですが、それは各ソートアルゴリズムごとに得意な「データの形式」が異なるからです。出くわした「データの形式」に合わせて、アルゴリズムを切り替えています。どのアルゴリズムが、どの「データの形式」を取り扱うのが、得意かは自分も把握はしていません。
8
8
 
9
- 出くわした「データの形式」に合わせて、アルゴリズムを切り替えています。どのアルゴリズムが、どの「データの形式」を取り扱うのが、得意かは自分も把握はしていません。
10
-
11
9
  ここで言う「データの形式」と言うのは、例としてはよくないですが、クイックソートは一般にデータに偏りがあると遅くなることが知られています。この例なら大抵の教科書には乗っているので、伝わってくれればと感じています。
12
10
 
13
11
  以下のページに、どの「データ形式」なら速くなるか書かれているので、良いかなと思いました。

1

誤字修正

2020/07/03 02:48

投稿

nico25
nico25

スコア830

answer CHANGED
@@ -37,7 +37,7 @@
37
37
 
38
38
  対して、マージソートやヒープソートは、いくらか無駄な手がはいっている感じがします。無駄ってなんだよって感じですが。ヒープ、ヒープソート, マージソートについては、それぞれ以下の記事で可視化しました。もし雰囲気が伝われば幸いです。
39
39
 
40
- * [Python でヒープ](https://python.ms/heap/)
40
+ * [Python でヒープ](https://python.ms/binary-heap/)
41
41
  * [Python でヒープソート](https://python.ms/heap-sort/)
42
42
  * [Python でマージソート](https://python.ms/merge-sort/)
43
43