0
已解决
曹砚青
中级光能
中级光能
5150 选择排序的交换次数经验值:0
题目描述 Description
输入一个数组,求出以普通的选择排序的方式完成从小到大排序,并输出进行了多少次交换变量。
输入描述 Input Description
输出两行
第一行一个整数n,表示给n个数排序
第二行n个正整数,表示具体的n个数字
输出描述 Output Description
输出两行
第一行n个数,为从小到大排序后的结果
第二行一个数,表示在排序的过程中进行了多少次交换变量
样例输入 Sample Input
5 4 1 2 3 5
样例输出 Sample Output
1 2 3 4 5 3
数据范围及提示 Data Size & Hint
1<=n<=1000
曹砚青在2020-10-24 09:53:41追加了内容
my code:
#include<bits/stdc++.h>
using namespace std;
int n,a[1005],cnt;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<n;i++)
{
int idx=i;
for(int j=i+1;j<=n;j++)
{
if(a[j]<a[idx])
{
idx=j;
cnt++;
}
}
swap(a[i],a[idx]);
}
for(int i=1;i<=n;i++)
{
cout<<a[i]<<' ';
}
cout<<endl<<cnt;
return 0;
}
曹砚青在2020-10-24 09:53:54追加了内容
my code:
#include<bits/stdc++.h>
using namespace std;
int n,a[1005],cnt;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<n;i++)
{
int idx=i;
for(int j=i+1;j<=n;j++)
{
if(a[j]<a[idx])
{
idx=j;
cnt++;
}
}
swap(a[i],a[idx]);
}
for(int i=1;i<=n;i++)
{
cout<<a[i]<<' ';
}
cout<<endl<<cnt;
return 0;
}
曹砚青在2020-10-25 11:29:22追加了内容
ding
曹砚青在2020-10-25 20:26:02追加了内容
有人吗?
解答!
曹砚青在2020-10-25 20:43:26追加了内容
已AC!♪(・ω・)ノ!