
算法
文章平均质量分 72
Irean_Lau
Flow, Ambitious Geek, Apathy
展开
-
【动态规划】 Google面试题 爬楼梯问题 斐波那契问题的多种解法
Google 曾询问应征者 :有N阶楼梯 ,你每次只能爬1或2 阶 楼梯;能有多少种方法对这个问题进行分析: 假设N阶楼梯的爬法有A(N)种;由于每次爬1或2阶 因此 A(N)= A(N-1)+ A(N-2),并且A(1)= 1.显而易见 这是一个 典型的 “斐波那契数列” 问题代码实现如下:#include using namespace std;原创 2015-04-14 19:51:09 · 5683 阅读 · 0 评论 -
算法数据结构 单链表的实现+操作 以及和顺序表的对比
顺序表和单链表的优缺点对比:顺序表的优点,无需为表示表中元素之间的逻辑关系而增加额外的存储空间;可以快速的存取表中的任意位置的元素。顺序表的缺点,插入后删除操作需要移动大量元素;当线性表长度不稳定时,存储空间难确定,容易造成存储空间碎片。对于单链表链式存储即元素存储的内存单元可以是不连续,分散的。对于元素间如何来维护他们的关系(即逻辑原创 2015-04-28 20:10:56 · 1467 阅读 · 0 评论 -
【内部排序】 交换排序与选择排序详解
交换排序:通过依次交换逆序的元素使其有序化的过程。介绍两种交换排序: 冒泡排序,快速排序冒泡法:从第一个元素开始,依次比较相邻的两个元素,如果逆序则交换,第一趟比较结束后,序列中最大的元素将移动到序列末尾,即第n个位置,第二趟将次大元素移动到n-1位置…… 多趟比较后,会形成有序序列,排序方法类似气泡慢慢向上浮动,因此成为冒泡法。快速排序: 对冒泡的改进原创 2015-06-17 10:25:39 · 1824 阅读 · 0 评论 -
【插入排序】直接,折半,二路,希尔
插入排序 给出一下四种方法:直接插入排序,折半插入排序,二路插入排序,希尔插入排序代码实现:#includeusing namespace std;#define size 21typedef int Sqlist[size];void SInsertSort(Sqlist &L, int n) //直接插入{ cout << "直接插原创 2015-06-17 13:13:35 · 1627 阅读 · 0 评论 -
【排序算法】归并排序
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并操作的工作原理如下:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列设定两个指针,最初位置分别为两个已经排序序列的起始位置比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置原创 2015-06-23 12:12:09 · 1861 阅读 · 0 评论 -
《数字组合游戏》 40分4份
#include<stdio.h>#include<math.h>int main(){int weight1,weight2,weight3,weight4,d1,d2,d3,d4,x,flag; /*flag:满足题意的标记*/printf("The weight is broke up as following 4 pieces:");for(weight1=1;weight1<=原创 2016-04-01 14:47:29 · 649 阅读 · 0 评论 -
next数组求解
我们在一个母字符串中查找一个子字符串有很多方法。KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度。 当然我们可以看到这个算法针对的是子串有对称属性,如果有对称属性,那么就需要向前查找是否有可以再次匹配的内容。在KMP算法中有个数组,叫做前缀数组,也有的叫next数组,每一个子串有一个固定的next数组,它记录着字符串匹配过程中失配情况下可以向前多原创 2016-04-01 14:49:56 · 1204 阅读 · 0 评论