• 从今天开始收集一些经典的算法。


    一。用过excel的都知道excel的列编号是这样的:
    a b c .... z aa ab ac .... az ba bb bc .... yz za zb zc .... zz aaa aab aac ....
    分别代表以下编号:
    1 2 3 .... 26 27 28 29 .... 52 53 54 55 .... 676 677 678 679 .... 702 703 704 705 ....

    请写个函数,完成从一个正整数到这种字符串之间的转换。

    程序如下:

    using System; 
     
    namespace ConsoleApplication1 

        
    class Class1 
        

            
    static void Main() 
            

                
    for (int i = 1; i <= 999; i++
                

                    Console.Write(
    "{0,3}->{1,3}\t", i, Int2Excel(i)); 
                }
     
                Console.ReadLine(); 
            }
     
     
            
    public static string Int2Excel(int i) 
            

                
    string s = ""
     
                
    int m = i % 26
                i 
    = i / 26
                
    while (i != 0 || m != 0
                

                    
    if (m == 0
                    

                        i
    --
                        m 
    = 26
                    }
     
                    s 
    = Convert.ToChar(m + Convert.ToInt32('A'- 1).ToString() + s; 
     
                    m 
    = i % 26
                    i 
    = i / 26
                }
     
     
                
    return s; 
            }
     
        }
     
    }
     


    冒泡排序法:
    private  void startOrderAsc()
     52        {
     53            char temp;
     54                       
     55            //核心代码(升序)
     56            for (int i=0;i<orderLength ;i++)
     57                  for (int j = 0; j < orderLength - i-1; j++)
     58                  {
     59                      if (Orderdata [j].CompareTo (Orderdata [j+1])>0)
     60                      {
     61                          temp = Orderdata[j];
     62                          Orderdata[j] = Orderdata[j+ 1];
     63                          Orderdata[j + 1= temp;
     64
     65                      }
     
     66                  }

     67            
     68        }

    这其实不是一个简单的10进制转26进制的问题,因为基数不是从0到25,是从1到26。
    因此如果遇到余数为0,低位就要向高位借1变26(而高位要减1)。

    折半(对半、二分)查找

    public static int Search(int[] src, int subject)
    {
    int low = 0, high = src.Length - 1;
    
    while (low <= high)
    {
    int mid = (low + high) / 2;
    if (src[mid] < subject)
    {
    low = mid + 1;
    }
    else if (src[mid] > subject)
    {
    high = mid - 1;
    }
    else
    {
    return mid;
    }
    }
    return -1;
    } 
    


    -------------------------------------------------------------------------------------------------------------
    摘自http://www.cnblogs.com/Laser_Lu/archive/2005/04/13/136841.html

  • 相关阅读:
    未命名 1
    介绍一些实用的IOS手势识别库 (COCOS2D)
    cocos2d-x引擎实现$1Unistroke Recognizer手势识别
    【luogu P4755】Beautiful Pair(ST表)(笛卡尔树)(主席树)
    【ybtoj高效进阶 21290】头文件 D(平衡规划)(线段树)
    【ybtoj高效进阶 21289】头文件 C(图论)(dfs)
    【ybtoj高效进阶 21288】头文件 B(线段树)(图论)
    【ybtoj高效进阶 21282】数字重组(DP)(数学)
    【ybtoj高效进阶 21281】矩阵逆转(模拟)
    【ybtoj高效进阶 21280】景点距离(DP)(换根)
  • 原文地址:https://www.cnblogs.com/mrhgw/p/272872.html
Copyright © 2020-2023  润新知