• 一个小算法


    要求:将一个整数数组中的奇数和偶数分别放置到数组的前部和后部( 算法复杂度为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();
    }
    

      

    输出结果:

  • 相关阅读:
    学习笔记之jq
    学习笔记之pytest
    本月学习小结(01/10
    本月学习小结(01/09
    学习笔记之Poetry
    学习笔记之Dynaconf
    学习笔记之asyncio — Asynchronous I/O
    Redis 根据key获取所有 HashKey
    Java ffmpeg 合成音视频文件
    Redis 存储中文方式
  • 原文地址:https://www.cnblogs.com/lujiao_cs/p/2165935.html
Copyright © 2020-2023  润新知