【アルゴリズム導論】選択ソート法


せんたくソートほう
        
選択ソートは実はバブル法の改良であり、
その基本的な考え方も、まず最小要素を確定し、次に最小要素を探し、最後に最大要素を確定することです.
泡と並べ替えられています
最大の違いは、バブルソートは、それより大きい要素に遭遇すると交換され、ソートを選択すると、要素を最終的な決定位置に直接配置し、複数回の交換プロセスを回避することです.
        
例:配列a[5]={3,4,2,5,1}である.1は配列a[0]に置くべきであることは、一輪の比較によって知られている.従って、a[0]とa[4]を直接交換することができ、a[4]の比較過程における他の要素との交換を回避することができる.中間比較では、値を記録する必要はなく、インデックスを覚えるだけで要素を見つけることができます.
具体的な手順は以下の通りです.
#include<stdio.h>
void SelectSort(int* arrayA,int n);

void main()
{
	int arrayA[]={4,2,3,6,3,8,5};
	int n=sizeof(arrayA)/sizeof(int);
	SelectSort(arrayA,n);
	
	for(int i=0;i<n;i++)
		printf("%d ",arrayA[i]);
	printf("
"); } void SelectSort(int* arrayA,int n) { for(int i=0;i<n-1;i++) { int index=i; for(int j=i+1;j<n;j++)// j i+1 , { if(arrayA[j]<arrayA[index]) index=j;// } // i, i index if (index!=i) { // , i 。 int temp = arrayA[i]; arrayA[i] = arrayA[index]; arrayA[index] = temp; } } }

注意:私はvs 2008で実行して、vc 6.0と少し異なって、主に循環体の中の循環変数の作用域で、間違いは循環変数の繰り返し定義に現れます.たとえば、vs 2008またはvs 2010では、プログラムは次のとおりです.
#include void main() { int i=0; for(int i=0;i<5;i++) printf("%d ",i); }
VC 6.0では、次のように変更する必要があります.
#include void main() { int i=0; for(i=0;i<5;i++) printf("%d ",i); } 
原文:http://blog.csdn.net/tengweitw/article/details/9707801
作者:nineheadedbird