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;
     }<br>  int  a[10] ={1,5,10,13,17,23,65,77,81,93}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值