原理:在给定一组数中,找到最小值,与第一个数互换位置,然后从第二个数开始寻找,重复该过程,直至只有一个数为止。
例:数组{ 32,10,55,97,68,4}
第一次排序后:4{ 10,55,97,68,32}
第二次排序后:4,10{ 55,97,68,32}
第三次排序后:4,10,32{ 97,68,55}
第四次排序:4,10,32,55{ 68,97}
第五次排序后:4,10,32,55,68{ 97}
最后排序结构:4,10,32,55,68,97
程序:
#include<iostream>
using namespace std;
void selectsort(int *a, int n)
{
int tmp = 0, flag = 0; int j,i;
for (i = 0; i < n - 1; ++i)
{
tmp = a[i];
flag = i;
for(j=i+1;j<n;++j)
if (a[j] < tmp)
{
tmp = a[j];
flag = j;
}
a[flag] = a[i];
a[i] = tmp;
cout << "第" << i+1 << "次排序结果: ";
for (int k = 0; k < n; ++k)
cout << a[k] << " ";
cout << endl;
}
}
void main()
{
int a[] = { 32,10,55,97,68,4 };
int len = sizeof(a) / sizeof(a[0]);
selectsort(a, len);
system("pause");
}
运行结果:(这里为了让大家看清整个排序的过程,所以我在子函数里面输出,没有在主函数里面输出)