算法
ww020202
这个作者很懒,什么都没留下…
展开
-
求最大公约数--辗转相除法
求最大公约数的辗转相除法原创 2016-10-05 18:31:05 · 354 阅读 · 0 评论 -
宏实现一个数奇数位和偶数位的交换
主体思想 1 分别提取一个数二进制中的奇数位和偶数位 奇数位:x&0x55555555 因为5的二进制序列是0101 偶数位:x&0xaaaaaaaa 因为a的二进制序列是1010原创 2016-11-13 12:40:16 · 440 阅读 · 0 评论 -
左旋字符串K个字符的3种实现方法
第一种是先保存字符串第一个字符,然后循环实现。#include #include#includevoid strShift(char *str, int len, int step){ assert(str); assert(len > 0); step %= len; int i = 0; for (; i < step; i++){ char tmp = str原创 2016-11-13 16:06:41 · 290 阅读 · 0 评论 -
深浅拷贝
浅拷贝:多个对象共用同一块内存空间,在析构时会出现问题。例如:创建了三个String类对象String s1="hello";String s2(s1);String s3;s3=s2;s2创建时调用拷贝构造函数,使得s2的指针指和s1的指向都为“hello”这块空间。s3创建时调赋值运算符的重载,使得s1,s2,s3都指向同一空间,则在析构时会出现问题。并且会导致s3的内存泄漏原创 2017-03-29 01:11:40 · 261 阅读 · 0 评论 -
斐波那契数列实现与分析
斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...这个数列从第三项开始,每一项都等于前两项之和。下面将用递归算法和非递归算法分别实现,并求其时间与空间复杂度。////斐波那契递归算法////时间复杂度 O(2^N)////空间复杂度 O(N)#includeusing namespace std;int原创 2017-05-13 16:16:25 · 318 阅读 · 0 评论 -
交换排序(1)---冒泡排序
冒泡排序冒泡排序算法的运作如下:(从后往前) 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 void Bub原创 2017-07-11 22:18:42 · 239 阅读 · 0 评论 -
交换排序(2)--快速排序3种实现方案及其优化
快速排序 快排的整体思想是找出一个key值,比key的值小的都在它的左边,比key大的值都在它的右边。这样就划分了左右两个区域,分别找左右两个区域的key值继续划分左右区间。 找中间值的位置有三种方法(1)左右指针法原创 2017-07-11 22:30:06 · 665 阅读 · 0 评论 -
归并排序
归并算法:对于数据较大的输入,归并排序是比较快的一个算法。该算法采用的是分治法的思想。归并排序的原理:先将数据分开排序,然后再合并起来,最后形成一个排好的序列。void _Merge(int* a, int* tmp, int begin1, int end1, int begin2, int end2)//7-2区间合并{ int原创 2017-07-13 12:01:12 · 256 阅读 · 0 评论