ソーティングプロセスは、指定された順序に従って配置されたデータのセットです。
分類の分類:
1)内部ソート:
これは、内部メモリの一種にロードされ、処理されるすべてのデータを指します。
(、ソート挿入ソート、および選択的な発注方式を切り替え)を含みます。
2)外部の選別方法。
データがメモリに外部メモリの助けをソートするすべての必要性をロードするためには大きすぎます。
あって(直接マージソートとソート方法をマージ)
ソート切り替え:
順序交換がソートのために、データ交換ルールの位置によって決定されたデータ値の比較を、使用した後、内部の一種です。
ソート2つのタイプに分けることができます切り替えます。
1)バブルソート(バブルソート)
2)クイックソート(クイックソート)
ソート切り替え - バブルソート
基本的な考え方バブルソート(バブルソート)されている:ソート順序を処理することにより(要素のより大きなインデックスから始まる)前部および後部コンパレータ隣接ソートコード要素、交換を逆に見つかった場合、より小さなコードの順序となるよう水の下に気泡が徐々にそれを取るように要素が徐々に、(小さいインデックスは、インデックス大きなセルを意味向かって)後部から前部を移動させます。
ソート処理なので、要素はもっと下の方の旅行は何のやり取りされていない場合、それはそう要素が交換されたかどうかを決定するためにソート処理フラグにフラグを設定するには、整然としたシーケンスを示し、その位置の近くに保ちます。このように比較的不必要を減らします。(最適化)
次の図は、発泡プロセスの一例を示しています。
要約ルールのバブルソート:
図1に示すように、合計が多くの欠点になり、各ラウンドの位置に比べarr.length-1回のいくつかのラウンドを通過します。
図2は、各ラウンドした後は徐々に比較の数を減らします。[4,3,2,1]
3、後者の番号の前に1よりも大きい数が、見つかった場合には、相互作用します。
コード:
図1に示すように、最終的に、最大数を完了することができるであろう。
図2に示すように、最後から2番目の位置で第二の最大数
。。。
ルール
=「複数のループを。
バブルソートで記述された機能を使用します:
パッケージのメイン
インポート(
「FMT」
)
バブルソートFUNC(ARRの*はint [5]){
fmt.Println( "= ARRをソートする前に"、(* ARR))
TEMP:(と引き換えに)= 0 //一時変数
//バブルソート
私のために:= 。0;私は(* ARR)でlen < - 1; I ++ {
jについて:= 0; J <LEN(* ARR) - 1 - I; J ++ {
IF(* ARR)[J]>(* ARR)[J + 1] {//もし>置換<降順なる
TEMP =(* ARR)[J]
(* ARR)[J] =(* ARR)[J + 1]
(* ARR)[ 1 + J] = TEMP
}
}
}
fmt.Println( "ソート= ARR"、(* ARR))
}
FUNCのメイン(){
ARR:[5] = {24,69,80,57,12} int型
、//配列が関数に渡されるソーティングの完了
バブルソート(&ARR)を
fmt.Println( "主ARR ="、ARR)
}
バブルソートを書くための一般的な方法:
FUNCのメイン(){
ARR = [5] INT {} 24,69,80,57,12
fmt.Println( "= ARRを選別前"、ARR)
温度:= 0
iについて:= 0; 私がlen <(ARR)-1。私は{++
jについて:= 0; J <LEN(ARR)-1 -i。J ++ {
もしARR [J]> [J + 1] {ARR
一時=のARR [J]
[J] =のARR [J + 1] ARR
ARR [J + 1] = TEMP
}
}
}
fmt.Println( "ソート= ARR"、ARR)
}