题目:现有一个n个整数的序列,你要做的就是交换两个数的位置直到整个序列按照升序排列,那么将这个整数序列排好序,需要交换多少次?例如,1,2,3,5,4,我们只需要交换一次,即将5和4交换即可。
输入描述:
第一行输入一个正整数n(n≤1000),表示数字序列的元素个数,占一行;接下来一行输入从1到n的n个整数排序,中间用空格隔开
输出描述:
输出序列升序排列需要的最少交换次数
输入例子:
4
4 3 2 1
输出例子:
6
#include <iostream>
using namespace std;
int main()
{
int arr[1000];
int num=0;
int n;
cin>>n;
cout<<endl;
for(int i=0;i<n;i++)
{
int p;
cin>>p;
arr[i]=p;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n-1;j++)
{
if(arr[j+1]<arr[j])
{
int tmp;
tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
num=num+1;
}
}
}
/*for(int i=0;i<n;i++)
{
cout<<arr[i]<<" ";
}*/
cout<<endl;
cout<<num<<endl;
return 0;
}
public static void main(String[] args) {
int arr[]=new int[1000];
int num=0;
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
System.out.println();
for(int i=0;i<n;i++)
{
int p=scan.nextInt();
arr[i]=p;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n-1;j++)
{
if(arr[j+1]<arr[j])
{
int tmp;
tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
num=num+1;
}
}
}
System.out.println(num);
}