ソート:選択ソート(C++実装)

1020 ワード

ソートの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)である.
安定性:不安定.