C# 常用算法

/// <summary>

    ///  1+2+3+....+n的递归算法

    /// </summary>

    /// <param name="i"></param>

    /// <returns></returns>

    public static int Process1(int i)

    {

        //计算1+2+3+4+...+100的值



        if (i == 0) return 1;

        if (i == 1) return 1;

        return Process1(i - 2) + Process1(i - 1);

    }

    /// <summary>

    /// 1+2+3+....+n的非递归算法

    /// </summary>

    /// <param name="i"></param>

    /// <returns></returns>

    public static int Process2(int i)

    {

        //计算1+2+3+4+...+100的值



        if (i == 0) return 0;

        return Process2(i - 1) + i;

    }



    /// <summary>

    /// 1-2+3-4+5-....+n的非递归算法

    /// </summary>

    /// <param name="isum"></param>

    /// <param name="itype"></param>

    /// <returns></returns>

    public static int Process0(int isum, int itype)

    {

        int sum = 0;



        for (int i = 1; i <= isum; i++)

        {

            if (itype == 1)

            {

                if (i % 2 != 0)

                {

                    sum += i;

                }

                else

                {

                    sum += (-1) * i;

                }

            }

            else

            {

                sum += i;

            }

        }

        return sum;

    }

    /// <summary>

    /// 冒泡法排序

    /// </summary>

    /// <param name="arrLen"></param>

    public static void order1(ref int[] arrLen)

    {

        int temp;

        for (int i = 0; i < arrLen.Length; i++)//冒泡法排序

            for (int j = i + 1; j < arrLen.Length; j++)

                if (arrLen[i] > arrLen[j])

                {

                    temp = arrLen[i];

                    arrLen[i] = arrLen[j];

                    arrLen[j] = temp;

                }

    }



    /// <summary>

    /// 冒泡法排序

    /// </summary>

    /// <param name="arrLen"></param>

    public static void order2(ref int[] arrLen)

    {

        for (int i = 0; i < arrLen.Length - 1; i++)

        {

            for (int j = 0; j < arrLen.Length - 1 - i; j++)

            {

                if (arrLen[j] > arrLen[j + 1])

                {

                    int temp = arrLen[j];

                    arrLen[j] = arrLen[j + 1];

                    arrLen[j + 1] = temp;

                }

            }

        }

    }



    

    //折半查找、二分算法

    //数组必须按照一定的顺序

    //参数:最大,最小,目标(参数类型为整数)

    public static int BinarySearch(int min, int max, int num)

    {

        if (min == max) return -1;

        int mid = (min + max) / 2;

        if (a[mid] == num) return mid;

        else if (a[mid] < num)

        {

            return BinarySearch(mid + 1, max, num);

        }

        else

        {

            return BinarySearch(min, mid - 1, num);

        }

    }

    //折半查找、二分算法

    //非递归算法

    public static int BinarySearch_F(int num)

    {

        int min = 0;

        int max = 9;

        int mid;

        while (min <= max)

        {

            mid = (min + max) / 2;

            if (a[mid] == num) return mid;

            else if (a[mid] > num) max = mid - 1;

            else min = mid + 1;

        }

        return -1;

    }
int a[10] ={1,5,10,13,17,23,65,77,81,93}

你可能感兴趣的:(C#)