zoukankan      html  css  js  c++  java
  • 从今天开始收集一些经典的算法。

    一。用过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

  • 相关阅读:
    VMware安装Ghost版Win10 失败的解决方法
    供销平台能导入不能编辑商品的问题
    bootstrap导航菜单做active判断
    phantomjs读取文件转换数组
    网址收藏
    清理恶意绑定浏览器网址
    sort
    论文等级
    multiThreading
    LZ4压缩算法
  • 原文地址:https://www.cnblogs.com/mrhgw/p/272872.html
Copyright © 2011-2022 走看看