選擇排序,排序字母時存在不穩定排序
代碼:
#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表示交換的次數
*/