现有一个n个整数的序列,你要做的就是交换两个数的位置直到整个序列按照升序排列,那么将这个整数序列排好序,需要交换多少次?例如,1,2,3,5,4,我们只需要交换一次,即将5和4交换即可。
一、 c/c++实现
#include <iostream>
using namespace std;
//
#include<vector>
class Solution
{
public:
int MinChange(vector<int> &array, int len)
{
if(len < 1)
return 0;
//
int count = 0;
for(int i = 0; i < len; i ++)
{
for(int j = i + 1; j < len; j ++)
{
if(array[i] > array[j])
count++;
}
}
return count;
}
};
int main()
{
int n = 0;
cout<<"请输入数组的长度";
cin >> n;
vector<int>array;
int temp = 0;
for(int i = 0; i < n; i++)
{
cin>>temp;
array.push_back(temp);
}
Solution s;
cout<<s.MinChange(array, n);
system("pause");
return 0;
}
二、c#实现
using System;
using System.Collections.Generic;
using System.Linq;
namespace taotao
{
class Program
{
static void Main(string[] args)
{
Console.Write("请输入一个整数数组的大小:");
int len = Convert.ToInt32(Console.ReadLine());
List<int> _list = new List<int>();
for (int i = 0; i < len; i++)
{
_list.Add(Convert.ToInt32(Console.ReadLine()));
}
//
Console.WriteLine("需要交换的次数:{0}", ChangeCount(_list, len));
}
static int ChangeCount(List<int>_list, int len)
{
int count = 0;
for (int i = 0; i < len; i++)
{
}
bool flag = true;
while (flag)
{
flag = false;
for (int i = 1; i < len; i++)
{
if (_list[i - 1] > _list[i])
{
Swap(_list[i - 1], _list[i]);
flag = true;
count++;
}
}
len--;
}
return count;
}
static void Swap(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
}
}