parent
fee85368ba
commit
f1debdc7c3
|
@ -3,6 +3,7 @@
|
|||
## ソート
|
||||
|
||||
- [バブルソート](./Sorting/Bubble-Sort.md)
|
||||
- [挿入ソート](./Sorting/Insertion-Sort.md)
|
||||
|
||||
## 文字列
|
||||
- [回文](./Strings/Palindrome.md)
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
# 挿入ソート
|
||||
|
||||
基本挿入法とも呼ばれる挿入ソートは、シンプルで実装が容易であり、最も安定しているソートアルゴリズムである。数値が正しい場所にない場合に、その数値を正しい位置に挿入する。平均、最悪計算量は共にO(n^2)である。
|
||||
|
||||
挿入ソートを高速化したものとしてシェルソートがある。
|
||||
|
||||
## ステップ
|
||||
|
||||
1. 0番目の要素と1番目の要素を比較する。
|
||||
2. 0番目の要素が1番目の要素より大きい場合、要素を入れ替える。
|
||||
3. 2番目の要素と1つ前の要素を比較する。
|
||||
4. 2番目の要素が1つ前の要素より大きい場合、要素を入れ替える。
|
||||
5. 2番目の要素が正しい位置に来るまで2.と4.を実行する。
|
||||
6. ソートが完了するまで3.から5.を何度も繰り返す。
|
||||
|
||||
## 例
|
||||
|
||||
初期配列
|
||||
**1 4 3 9 5**
|
||||
|
||||
ソート後配列
|
||||
**1 3 4 5 9**
|
||||
|
||||
ステップ
|
||||
**1回目**
|
||||
|
||||
- ( **1 4** 3 9 5 ) → ( **1 4** 3 9 5 ), ここでアルゴリズムは最初の2つの要素を比較し、順番通りのため(4 > 1), アルゴリズムは入れ替えをしない。
|
||||
|
||||
**2回目**
|
||||
|
||||
- ( 1 **4 3** 9 5 ) → ( 1 **3 4** 9 5 ), 4 > 3なので入れ替える。
|
||||
- ( **1 3** 4 9 5 ) → ( **1 3** 4 9 5 )
|
||||
|
||||
ここで選択した要素が1つ前の要素よりも大きいため、アルゴリズムは選択した要素の次の要素に移る。(この配列の場合は3の次である4)
|
||||
|
||||
**3回目**
|
||||
- ( 1 **3 4** 9 5 ) → ( 1 **3 4** 9 5 )
|
||||
|
||||
**4回目**
|
||||
- ( 1 3 **4 9** 5 ) → ( 1 3 **4 9** 5 )
|
||||
|
||||
**5回目**
|
||||
- ( 1 3 4 **9 5** ) → ( 1 3 4 **5 9** )
|
||||
- ( 1 3 **4 5** 9) → ( 1 3 **4 5** 9 )
|
||||
|
||||
さて、この時点で配列はすでにソートされたが、まだ配列の最後の要素にたどり着いていない。アルゴリズムは配列の最後の要素を選択するまで続く。
|
||||
|
||||
**6回目**
|
||||
- ( 1 3 4 **5 9** ) → ( 1 3 4 **5 9** )
|
||||
|
||||
## 実装
|
||||
|
||||
- [C](../../../algorithms/C/sorting/insertion-sort.c)
|
||||
- [C++](../../../algorithms/CPlusPlus/Sorting/insertion-sort.cpp)
|
||||
- [CSharp](../../../algorithms/CSharp/src/Sorts/insertion-sort.cs)
|
||||
- [Go](../../../algorithms/Go/sorting/insertion-sort.go)
|
||||
- [Java](../../../algorithms/Java/sorting/insertion-sort.java)
|
||||
- [JavaScript](../../../algorithms/JavaScript/src/sorting/insertion-sort.js)
|
||||
|
||||
## 動画のURL
|
||||
|
||||
[Youtube Video about Insertion Sort](https://www.youtube.com/watch?v=i-SKeOcBwko)
|
||||
|
||||
## その他
|
||||
|
||||
[Wikipedia](https://en.wikipedia.org/wiki/Insertion_sort)
|
Loading…
Reference in New Issue