孙晓 老湿 《算法分析与设计》第二周课堂笔记
一.矩形三等分问题
问题描述:通过折叠将一张矩形的纸分成三等份
解法一:
如上图所示:
1.沿FI对折,再沿着EJ对折,然后在沿着AD对折。
2.展开矩形,沿着ABCD的对角线BD对折
3.把角B向D折叠,折出三条折线,使产生的折现分别已A,E,F为端点,并且要使对角线BD重合。
4.此时折出的三条折现分别是:AC,EH,FG,他们在BC边上的端点GH将BC边等分为三等份。
5.剩下的就简单了。
二.面试题
1.判断2,4,8,16等2的N次幂。
解答:if(X&(X-1))
说明:利用二进制解答:
输入值 2 4 8 16
二进制 10 100 1000 10000
二进制-1 01 011 0111 01111
两者做与 0 0 0 0
所以,如果输入值是2的N次幂,那么(X&(X-1)) ==0
2.完成字符串拷贝函数:
说明:首先要判断指针时候为空。
三.排序算法:
冒泡排序
插入排序
选择排序
堆排序
希尔排序
箱排序
桶排序