选择排序,排序字母时存在不稳定排序
代码:
#include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std;
int Sort(int A[],int n)
{
int sum=0,minj,i,j;
for( i=0;i<n;i++)
{
minj=i;
for( j=i;j<n;j++) //选出来每次的最小值
{
if( A[j]<A[minj] )
{
minj=j;
}
}
swap( A[i], A[minj] );
if(i!=minj) //排除i的位置是最小值的情况,如果i是最小值就不用判断了,
sum++;
}
return sum;
}
int main()
{
int n,sw,A[105];
cin>>n;
for(int i=0;i<n;i++)
cin>>A[i];
sw = Sort( A,n );
for(int i=0;i<n;i++)
printf("%d%c",A[i],i==n-1?'\n':' ');
cout<<sw;
return 0;
}
/*
输入:
6
5 6 4 2 1 3
输出:
1 2 3 4 5 6
4 //4表示交换的次数
*/