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

来源:互联网 发布:淘宝客推广到哪里 编辑:程序博客网 时间:2024/05/22 01:46

现有一个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;        }    }}



0 0
原创粉丝点击