2017年8月18日

排序-shell排序

摘要: 在插入排序中,所有的元素都是挨个和前一个元素进行比较,并置换位置。所以交换的次数为N的平方级别。极端情况下,如果最小元素在最右侧,那么需要逐个和前面元素进行置换。如果将比较的间隔增大,那么会减少移动次数,然后逐次降低比较间隔。 于是比较的间隔的序列如下 h = 3*h+1。 代码如下: 目前要理解s 阅读全文

posted @ 2017-08-18 13:36 ^~~^ 阅读(137) 评论(0) 推荐(0) 编辑

排序-插入排序

摘要: 插入排序的逻辑如下: 代码如下: 阅读全文

posted @ 2017-08-18 13:25 ^~~^ 阅读(136) 评论(0) 推荐(0) 编辑

排序-选择排序

摘要: 选择排序的过程如下: 用代码写出来结果就是: 性能分析: 阅读全文

posted @ 2017-08-18 13:06 ^~~^ 阅读(132) 评论(0) 推荐(0) 编辑

2017年8月17日

二分查找算法

摘要: 通过改变边界位置来进行查找的方法,代码如下: 阅读全文

posted @ 2017-08-17 14:07 ^~~^ 阅读(152) 评论(0) 推荐(0) 编辑

推荐一本书呗

摘要: 只想说一下第33行的算法,当整数i/7 时,可以用这个方式:(i>>3) + (i>>6) +1。 原理如下: 1 除法可以用移位来代替。 2 除7的话,没法移位,那就换成除8,右移3位。 3 除7和除8之间的差距是 1/7 - 1/8= 1/56. 4 弥补这个差距,所以要加上 i/56 。用移位 阅读全文

posted @ 2017-08-17 11:03 ^~~^ 阅读(172) 评论(0) 推荐(0) 编辑

位操作大全

摘要: 无意翻看,发现斯坦福大学的网页中,记录了位操作的所有方法。特记录。 http://graphics.stanford.edu/~seander/bithacks.html#OperationCounting?utm_source=wechat_session&utm_medium=social&s_ 阅读全文

posted @ 2017-08-17 09:34 ^~~^ 阅读(121) 评论(0) 推荐(0) 编辑

2017年8月16日

收集的一些关于C++的黑魔法

摘要: 逛知乎途中,发现了一些C++变态用法,现在记录下来。 第一:打印的结果是 4,5。 也就是说第八行的代码++i没有执行。的确没执行。原因是sizeof是预编译指令,在编译阶段就执行了。 第二:打印出来的结果是9876543210. 体会-->符号的用法。 第三:打印结果是A。 这里将一个C风格字符串 阅读全文

posted @ 2017-08-16 17:49 ^~~^ 阅读(709) 评论(0) 推荐(0) 编辑

奇偶排序问题

摘要: 经典的算法面试题目,有一个数组,1,2,3,4,5,6,7,8,9,10,将所有的偶数放在数组后面,奇数放在数组前面。 思路如下: 第一:按照快速排序的思想,同时从前到后,从后到前进行迭代。 第二:如果前面是偶数,后面是奇数,则交换。 第三:如果迭代位置相遇,则退出循环。 代码如下: 阅读全文

posted @ 2017-08-16 11:07 ^~~^ 阅读(139) 评论(0) 推荐(0) 编辑

求最大连续子数组之和

摘要: 这是一道经典的面试题目。有如下数组:1,-2,3,10,-4,7,2,-5。需要求出最大的连续子数组之和。 分如下步骤: 第一:先挑选第一个元素作为最大子数组之和max。 第二:遍历整个数组,迭代每一个元素并相加。 第三:如果当前元素和current大于max,那么max=current。 第四:如 阅读全文

posted @ 2017-08-16 10:50 ^~~^ 阅读(169) 评论(0) 推荐(0) 编辑

2017年8月15日

字符串旋转算法

摘要: 字符串旋转算法,在很多地方都有提到过。主要有两种方法: 第一种,暴力移动。 第二种,大概都是参考编程珠玑上的字符串旋转算法。 这里有一个链接,http://crackprogramming.blogspot.com/2012/10/rotate-given-string-by-position.ht 阅读全文

posted @ 2017-08-15 14:42 ^~~^ 阅读(242) 评论(0) 推荐(0) 编辑

导航