1,  1000的阶乘

这个算法主要有两个地方要注意, 一个就是大数的问题, 还有一个就是位数的问题,

只要这两个问题解决了,这个算法也就没有什么问题了,

①首先还是来说一下位数的问题, 有一个比较简单的办法,就是有一个人已经做了一个公式来

做位数的问题了: lnN!=NlnN-N+0.5ln(2N*pi), log10(N!)取整后加1就是1000!的位数,这里log10(N!)=lnN!/ln(10),

是不是很简单,看来数学这个东西还真是要学好不可啊,

        }

②大数的问题, 因为在阶乘运算中,常常用一个long int型是不能够的,这样就要找其它的办法,要在存储数字,这样的话就只有数组了,

用数组里a[0]--个位,a[1]--十位,a[2]--百位.......这样不就可以表达所有的数了吗?

最后 1000阶乘源码

源文件:/Files/ouzi/WinForm/Factorial1000.rar

 

2, 快速排序法

快速排序法可以说是运用递归的最经典的例子,哦,这个话好象不对, 最经典的应该是这个Fibonacci了

        }

我以前好象说过,我在项目中用的快速排序也不多,主要用的是插入排序法,因为插入排序法的代码相对少一些,也比较直观,

现在闲来无事,也就将这个做一下,快速排序法的主要思想就是不停的填位,再不停的分割,填位就是为了让基数左边的所有数都

小于基数,右边的数都大于基数(这个是按由小到大来说的).

Code

 height)
        {
            if (low >= height)
                
return;

            
int i = low;
            
int j = height;
            
int baseValue = array[i];


            
while (i < j)
            {
                
while ((array[j] >= baseValue) && (i < j)) j--;
                array[i] 
= array[j];

                
while ((array[i] <= baseValue) && (i < j)) i++;
                array[j] 
= array[i];
            }

            array[i] 
= baseValue;

            Sort(array, low, i 
- 1);
            Sort(array, i 
+ 1, height);
        }

 

3,分页的存储过程

这个应该不能算是算法,但好象也不能不算,不管那么多了,就这样的吧,放到这里,这个存储过程中也有一些技巧的东西。

'

这个里面的sp_executesql的用法要注意,可以在存储过程中返回值,这样在分页中就不用返回两个表了,

DECLARE @sqlString NVARCHAR(500)
DECLARE @totalCount INT

SET @sqlString='SELECT @totalCount=COUNT(*) FROM Blog'
EXEC sp_executesql @sqlString,N'@totalCount INT OUTPUT',@totalCount OUT

PRINT @totalCount

 

 4,两张表列的拼接

也就是没有关系的两张表的列拼接

tb.RowNumB

 

     

 


----------------------------------------------------------------------------------------------------------------

算法之路永无止境---ouzi--just love it 

相关文章:

  • 2021-10-28
  • 2022-01-01
  • 2021-05-29
  • 2021-10-01
  • 2022-02-15
  • 2022-12-23
  • 2022-12-23
  • 2021-05-29
猜你喜欢
  • 2021-07-11
  • 2021-10-10
  • 2022-01-06
  • 2021-12-18
  • 2022-02-18
  • 2021-06-27
  • 2022-12-23
相关资源
相似解决方案