蘑菇街2017校园招聘笔试题

2016/05/21 C和C++基础

特殊交换

现有一个n个整数的序列,你要做的就是交换两个相邻数的位置直到整个序列按照升序排列,那么将这个整数序列排好序,需要交换多少次?例如,1,2,3,5,4,我们只需要交换一次,即将5和4交换即可。

输入描述:

第一行输入一个正整数n(n≤1000),表示数字序列的元素个数,占一行;接下来一行输入从1到n的n个整数排序,中间用空格隔开

输出描述:

输出序列升序排列需要的最少交换次数

输入例子:

4

4 3 2 1

输出例子:

6

#include <iostream>
#include <vector>

using namespace std;

int main(){
	int n;
	while(cin>>n){
		vector<int> vec;
		for(int i=0;i<n;i++){
			int num;
			cin>>num;
			vec.push_back(num);
		}

		int count=0;
		for(int i=0;i<n-1;i++){
			for(int j=0;j<n-i-1;j++){
				if(vec[j]>vec[j+1]){
					int temp=vec[j];
					vec[j]=vec[j+1];
					vec[j+1]=temp;
					count++;
				}
			}
		}
		cout<<count<<endl;
	}
}

Search

    Post Directory