序章
英語名: Select Sort は、
選択ソートの最も単純なアルゴリズムです。
ステップ
以下では、例として配列 2,5,8,3,6,9,1,4,7 を使用して、
小さいものから大きいものへと並べ替えます。
1. 未ソート部分で最小の数値を見つけます。
- 最初は最初の故障から順に全て故障とみなされます
- 最小の数 1 を見つけます
2. 見つかった最小の数字の位置を確認し、それが未ソート部分の最初の数字でない場合は、最初の数字と交換します。
- 1 は最初ではないので、2 に置き換えます。
3. すべての数値が並べ替えられるまで、最初の 2 つの手順を繰り返します。
-
1が配置されたので、次のステップは2番目の番号からのランダムな部分です、2番目の番号から最初の2つのステップを繰り返します
-
最小の数 2 を見つけます
- 前の番号と交換する
- 続く
次の手順も非常に簡単ですが、現在は省略されています。
コード
- まず、各数値を配置するために n-1 回の走査を実行する必要があります (順序付けせずに最後の数値のみが残ります)。
- k を使用して、現在の不規則な部分の最小数の下付き文字を記録します。
- 2 番目の数値からトラバースを開始して最小の数値を見つけ、それを k でマークされた数値と比較します。
- 最小の添字がランダムな順序で最初でない場合は、2 つの数値を交換します
#include<bits/stdc++.h>
using namespace std;
void SelectSort(int a[],int len)
{
int k;
for(int i=0;i<len-1;i++)//未排序第一个数
{
k=i;//取第一个数
for(int j=i+1;j<len;j++)//遍历未排序部分
if(a[j]<a[k])
k=j;//取更小
if(i!=k)//不在未排序第一的位置
swap(a[k],a[i]);
for(int t=0;t<len;t++)
cout<<a[t]<<" ";
cout<<endl;
}
}
int main()
{
int a[9]={
2,5,8,3,6,9,1,4,7};
int len=9;
SelectSort(a,len);
return 0;
}
特性
1. 時間計算量
O ( n 2 ) O(n^2)O ( n2 )
2. 空間の複雑さ
平均空間複雑度は次のとおりです: O ( 1 ) O(1)○ (1)
3. アルゴリズムの安定性
同じ要素の順序は変わりますか?
非常に簡単な例を挙げてください
上の図では、青 1 が青 2 と交換され、2 つの 2 の前後の位置が直接変更されます。
単純な選択ソートのソートが不安定なので
クイズ
久しぶりのクイズ
古いルールは、最小数を前に変更し、最大数を後ろに変更します。
チョンチョンチョンψ(`∇´)ψ