算法学习
zylkkx
这个作者很懒,什么都没留下…
展开
-
【算法学习】随机快速排序
要求:编写一个快排算法对长度为n的序列进行排序,要求平均耗时为n*logn,内存占用较小。方法:随机选取一个数为pivot,然后遍历整个数组,小于pivot的放前面,大于pivot的放后面。然后再分别对前后两个数组进行递归调用。eg.长度为N的序列: 【 1, 5, 3, 6, 2,10】STEP1:随机选取一个数为pivot,例如5STEP2:交换pivot和第一个...原创 2019-07-30 09:38:09 · 182 阅读 · 1 评论 -
【算法学习】大数乘法
要求:计算两个大数X,Y的乘法,要求时间小于n^2.方法:分治法,将两个数分解为等长的两段。X(n)= (a*10^m + b) , Y(n)= (c*10^m + d);(其中m = n/2)X*Y = a*c*S(2m)+ b*d + (ad + bc)*S(m);这里需要4次乘法(a*c, b*d, a*d, b*c),*S(m)不为乘法,通过位置/位移...原创 2019-07-26 08:51:38 · 212 阅读 · 0 评论 -
【算法学习】统计逆序数的个数
要求:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。方法:归并方法,将数组分为前后两短,统计数木后同时进行排序。例如,数列F(n)分为head和rear等长两部分,两部分都分别排过序。则总的逆序数,等于head部分的逆序数 +rear部分的逆序数,再加上逆序的两个数分别在head和rear...原创 2019-07-26 09:24:10 · 1556 阅读 · 0 评论