问题标题: 酷町堂:哪位同学能帮我看一下5150为什么 0分?

0
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!♪(・ω・)ノ!


0
已采纳
朱优扬
朱优扬
中级天翼
中级天翼

你的思路看不懂;

你把第二个循环改成:

for(___ i=1;i<=n-1;____){

    for(___ j=i+1;j<=n;___){

        if(_______){

            cnt__;

            swap(_____);

        }

    }

}

有"_____"的地方自己填

0
0
蔡乐毅
蔡乐毅
高级光能
高级光能

把swap放到if里面去,idx不要用

0
我要回答