ソート:選択ソート(C++実装)
1020 ワード
ソートの2つの重要なソート方法を選択します.ソートとスタックソートを簡単に選択します.
ソートを選択する基本的な考え方は、各(例えばi回目)が後のn-i+1(i=1,2,...,n-1)個のソート対象要素の中でキーワードが最も小さい要素を選択し、ソートサブシーケンスのi番目の要素として、n-1回目が終わることを知っていて、ソート対象要素は1つしか残っていないので、これ以上選択しないことです.
単純選択ソート
単純に選択されたコード:
単純選択ソートアルゴリズムのパフォーマンス分析は次のとおりです.
空間複雑度:O(1)
時間効率:単純にソートを選択する過程で、要素移動の操作回数は少なく、3(n-1)回(1回のswapで3回の要素移動が必要)を超えず、最良の場合は0回移動し、この時対応するテーブルはすでに秩序化されているが、要素間の比較回数はシーケンスの初期状態に関係なく、常にn(n-)/2回であるため、時間複雑度は常にO(n^2)である.
安定性:不安定.
ソートを選択する基本的な考え方は、各(例えばi回目)が後のn-i+1(i=1,2,...,n-1)個のソート対象要素の中でキーワードが最も小さい要素を選択し、ソートサブシーケンスのi番目の要素として、n-1回目が終わることを知っていて、ソート対象要素は1つしか残っていないので、これ以上選択しないことです.
単純選択ソート
単純に選択されたコード:
#include
using namespace std;
void SelectSort(int a[], int n)
{
for (int i = 0; i < n - 1; ++i)// n-1
{
int index = i;//
for (int j = i + 1; j < n; ++j)// a[i...n-1]
{
if (a[index] > a[j])
{
index = j;//
}
}
if (index != i)
{
swap(a[i], a[index]);// i
}
}
}
int main()
{
int a[10] = {0, 4, 2, 9, 7, 1, 6, 3, 5, 8};
SelectSort(a, 10);
for (int i = 0; i < 10; ++i)
{
cout << a[i] << " ";
}
return 0;
}
単純選択ソートアルゴリズムのパフォーマンス分析は次のとおりです.
空間複雑度:O(1)
時間効率:単純にソートを選択する過程で、要素移動の操作回数は少なく、3(n-1)回(1回のswapで3回の要素移動が必要)を超えず、最良の場合は0回移動し、この時対応するテーブルはすでに秩序化されているが、要素間の比較回数はシーケンスの初期状態に関係なく、常にn(n-)/2回であるため、時間複雑度は常にO(n^2)である.
安定性:不安定.