输入:数量n,n个数据
输出:选择排序后的数据,交换的次数
Constraints
1 ≤ N ≤ 100
Sample Input 1
6
5 6 4 2 1 3
Sample Output 1
1 2 3 4 5 6
4
Sample Input 2
6
5 2 4 6 1 3
Sample Output 2
1 2 3 4 5 6
3
#include <cstdio>
#include <algorithm>
using namespace std;
void print_A(int A[],int n){
for (int i = 0 ;i<n;i++) {
if (i!=n-1 )printf("%d ",A[i]);
else printf("%d",A[i]);
}
printf("\n");
return ;
}
int selectionsort(int A[],int n ){
int count = 0;
for(int i =0;i<n-1;i++){
int y=i;
for(int j=i;j<n;j++) if(A[j]<A[y]) y=j;
if(A[y]<A[i]) {
swap(A[i],A[y]);
count++;
}
}
return count;
}
int main (){
int n,A[110];
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&A[i]);
int a=selectionsort(A,n);
print_A(A,n);
printf("%d\n",a);
return 0;
}
错点:
1.for(int i =0;i<n-1;i++) i<n即可 最后一位自动最大