zoukankan      html  css  js  c++  java
  • 一个小算法

    要求:将一个整数数组中的奇数和偶数分别放置到数组的前部和后部( 算法复杂度为O(n) )

        /// <summary>   
        /// 将数组中的奇数和偶数分别放置到前部和后部    
        /// </summary>   
        public class OddAndEvenExchange
        {
            /// <summary>        
            /// 待处理的数组       
            /// </summary>        
            public int[] numberLst;
    
            /// <summary>        
            /// 数组的长度        
            /// </summary>        
            public int Length;
            public OddAndEvenExchange(int[] numberLst)
            {
                if (numberLst == null)
                {
                    throw new Exception("数组不能为空!");
                }
    
                this.numberLst = numberLst;
                Length = numberLst.Length;
            }
    
            /// <summary>        
            /// 交换算法
            /// 算法复杂度:O(n)
            /// </summary>        
            public void Exchagne()
            {
                if (Length == 0)
                {
                    return;
                }
    
                int headIdx = 0;
                int tailIdx = Length - 1;
    
                while (headIdx < tailIdx)
                {
                    if (numberLst[headIdx] % 2 == 0)
                    {
                        if (numberLst[tailIdx] % 2 == 1)
                        {
                            //交换
                            int temp = numberLst[tailIdx];
                            numberLst[tailIdx] = numberLst[headIdx];
                            numberLst[headIdx] = temp;
                        }
                        else
                        {
                            tailIdx--;
                        }
                    }
                    else
                    {
                        headIdx++;
                    }
                }
            }
    
            /// <summary>        
            /// 输出数组信息        
            /// </summary>
            public void OutPut()
            {
                for (int i = 0; i < numberLst.Length; i++)
                {
                    Console.WriteLine(numberLst[i]);
                }
            }
        }
    

    算法调用:

    static void Main(string[] args)
     {
                OddAndEvenExchange test = new OddAndEvenExchange(new int[]{1,2,3,4,5,6,7});
                test.Exchagne();
                test.OutPut();
    }
    

      

    输出结果:

  • 相关阅读:
    Linq to xml 示例分析
    Nhibernate学习笔记
    SQL – 11.练习
    集合 ArrayList
    分享一个不错的VS插件——CodeMap(转发)
    wamp配置虚拟主机,虚拟目录,伪静态
    RBAC (RoleBased Access Control)基于角色的访问控制
    PHP的面向对象
    一名靠谱的JavaScript程序员应备的素质
    Javascript 广告定位
  • 原文地址:https://www.cnblogs.com/lujiao_cs/p/2165935.html
Copyright © 2011-2022 走看看