【アルゴリズム導論】選択ソート法
せんたくソートほう
選択ソートは実はバブル法の改良であり、
その基本的な考え方も、まず最小要素を確定し、次に最小要素を探し、最後に最大要素を確定することです.
泡と並べ替えられています
最大の違いは、バブルソートは、それより大きい要素に遭遇すると交換され、ソートを選択すると、要素を最終的な決定位置に直接配置し、複数回の交換プロセスを回避することです.
例:配列a[5]={3,4,2,5,1}である.1は配列a[0]に置くべきであることは、一輪の比較によって知られている.従って、a[0]とa[4]を直接交換することができ、a[4]の比較過程における他の要素との交換を回避することができる.中間比較では、値を記録する必要はなく、インデックスを覚えるだけで要素を見つけることができます.
具体的な手順は以下の通りです.
注意:私は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
選択ソートは実はバブル法の改良であり、
その基本的な考え方も、まず最小要素を確定し、次に最小要素を探し、最後に最大要素を確定することです.
泡と並べ替えられています
最大の違いは、バブルソートは、それより大きい要素に遭遇すると交換され、ソートを選択すると、要素を最終的な決定位置に直接配置し、複数回の交換プロセスを回避することです.
例:配列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
VC 6.0では、次のように変更する必要があります.
#include
原文:http://blog.csdn.net/tengweitw/article/details/9707801
作者:nineheadedbird