本文主要是介绍特殊交换(蘑菇街笔试题),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:现有一个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); }
这篇关于特殊交换(蘑菇街笔试题)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!