- もっとシェア:www.catbro.cn
I.はじめに:
- 私たちは前の章で学んだ選択ソート:アルゴリズムのレビュー論文、我々は挿入ソートを学ぶしていきます。この時
第二に、アルゴリズム記述
- (降順)簡単:1〜Nのいずれかの要素をソートしなければなりません
- 注:xは後ろ要素または要素と添字Y xまたはyの配列は、要素に対応する前記
- 図1に示すように、比較される現在の要素としてX(場合X = 1)の要素を取ります。
- 2、Y = Xのように。
- 図3に示すように、要素は、要素のy 1 y位置、要素YおよびY-1のスイッチング素子よりも大きい場合、Y 1 Y要素は、要素と比較され、撮影しました。
- 図4は、0よりも大きいが、実行は、ステップ3を繰り返し続けるとyは、0より大きいか否かが判定されます。
- 図5に示すように、x + 1が、そうでない場合、配列の長さよりも大きいか否かが判定されるX = X + 1、我々は、ステップ2にソートのそうでなければ終了を続行
- 上記から分かるように、フラッシュバックのソート機能は要素の配列をソートされたソートを有する前部要素、すなわち、そうXが最後のシーケンスの要素とするとき、xはハーシーをソートに等しい場合、配列はれる時ソート終えました。
第三に、コードの実装
以下のコードは、内部のコードSortUtilsの一部の参照選択ソート:アルゴリズムのレビュー記事を:
class InsertSortDemo { fun sort(list: Array<Comparable<Any>>) { for (i in 1..(list.size - 1)) { var j = i; while (j > 0 && SortUtils.less(list[j], list[j - 1])) { SortUtils.exchange(list, j, j - 1); j--; } } } }
テストコード:
fun main(args: Array<String>) { var list: Array<String> = arrayOf("S", "O", "R","T", "E", "X","A","M","P","L","E"); var insertSort = InsertSortDemo(); var startTime = System.currentTimeMillis(); insertSort.sort(list as Array<Comparable<Any>>) var endTime = System.currentTimeMillis(); var costTime = endTime - startTime; println("花费时间: $costTime") }
IVの概要:
- 挿入ソート
- 特徴:常に左の要素の順序
- 要素のスイッチング時間:0が最低であるN ^ 2/2回まで(リストには、リスト順にソートされます)、
- 取引所の平均数:N ^ 2/4回
- 要素数の比較:N ^ 2/4倍の、好ましくはN-1回(リストは、リスト順にソートされるべきである)、Nの最悪^ 2/2倍の平均
- いくつかのシナリオを挿入ソートでの使用に適して:
- 1、配列の各要素彼の最後の位置から短い距離、比較回数と交換の数が比較的小さくなるように
- 2、順序の配列にわずか数の要素
関連読書
- レビュー記事アルゴリズム:実践への理論から挿入ソート
- アルゴリズムのレビュー記事:選択ソート
- レビュー記事アルゴリズム:シェルソートの高度な挿入ソート
- 迎撃プロジェクトのルートディレクトリのSpringBoot取得
- AndroidのTextViewのプロパティの詳細な開発
- ソフトウェアのデザインパターン(学習の概念的な理解)
- シンプルなパッケージ・サポート・ネットワーク・アプリケーションの開発によって要求された小型のマイクロチャンネルの非同期操作を非同期待ちます
- 迅速vscode HTMLテンプレートを作成し、美しいです
- クラスベースの学習(A)のItemDecoration Recyclerview
- 詳細Pythonospathapi