算法
热爱艺术的程序员
github:https://github.com/AndrewLauGithub
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
KMP算法的改进
KMP算法的改进 #include "sqstring.cpp" void GetNextval(SqString t,int nextval[]) //由模式串t求出nextval值 { int j=0,k=-1; nextval[0]=-1; while (j<t.length) { if (k==-1 || t.data[j]==t.data[k]...原创 2020-05-07 08:01:22 · 306 阅读 · 0 评论 -
KMP算法
KMP算法-简单匹配算法的改进 KMP算法的实现如下: #include "sqstring.cpp" void GetNext(SqString t,int next[]) /*由模式串t求出next值*/ { int j,k; j=0;k=-1;next[0]=-1; while (j<t.length-1) { if (k==-1 || t.data[j]==t...原创 2020-05-07 07:58:51 · 463 阅读 · 0 评论 -
BF算法(简单匹配算法)
字符串的简单匹配算法-BF算法的实现 #include "sqstring.cpp" int index(SqString s,SqString t) { int i=0,j=0; while (i<s.length && j<t.length) { if (s.data[i]==t.data[j]) //继续匹配下一个字符 { i++;...原创 2020-05-07 07:55:38 · 7832 阅读 · 2 评论 -
元素分界线
题目描述:以第一个元素为基准,将所有小于等于它的元素移动到该元素的前面,将所有大于它的元素移动到该元素的后面。 #include<stdio.h> #include"sqlist.cpp" /* 设计一个算法,以第一个元素为分界线, 将所有小于它的元素移到该元素的前面, 将所有大于它的元素移到该元素的后面。 */ void Move1(SqList *&L) { int ...原创 2020-01-13 00:11:19 · 1228 阅读 · 0 评论 -
删除顺序表中所有值为X的元素
题目描述:删除顺序表中所有值为X的元素,要求时间复杂度为O(n),空间复杂度为O(1)。 #include<stdio.h> #include"sqlist.cpp" /*已知长度为n的线性表A采用顺序存储结构, 编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法, 该算法删除线性表中所有值为x的数据元素。 */ void DeleteNode1(SqList *&L...原创 2020-01-13 00:00:28 · 17677 阅读 · 0 评论 -
合并两个集合
题目描述: 假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,编写一个算法求一个新的集合C=A∪B,即将两个集合的并集放在线性表LC中。 #include<stdio.h> #include"sqlist.cpp" /* 假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示, 即线性表中的数据元素即为集合中的成员。 编写一个算法求一个新的集...原创 2020-01-12 23:53:59 · 3429 阅读 · 1 评论 -
递归方法求n!阶乘
递归的定义:在定义一个过程或函数时,出现调用本过程或者是本函数的成分,称之为递归。 通常需要用到递归的方法: 定义是递归的。(例如n!,Fibonacci数列问题) 数据结构是递归的(单链表的数据结构,二叉树的数据结构)。 问题的求解方式是递归的(汉诺塔问题)。 //用递归和非递归两种方式求n!问题 #include<iostream> #include<system_...原创 2019-03-03 19:00:13 · 16641 阅读 · 2 评论 -
汉诺塔问题
汉诺塔问题是经典的递归问题,它的递归类型是:求解问题的方法是递归的。 解题思路: 首先将n-1个盘子从X借助Z移动到Y。 将第n个盘子从X移动到Z。 再将1中的n-1个盘子从Y借助X移动到Z。 //汉诺塔问题 #include<iostream> #include<math.h> using namespace std; void move(char x, ch...原创 2019-03-03 21:04:46 · 234 阅读 · 0 评论 -
顺序查找
#include<iostream> #include<system_error> using namespace std; int sequeFind(int * arr,int n, int x) { int i = 0; while (i < n && arr[i] != x) { i++; } if (i < n) re...原创 2019-03-03 22:05:32 · 262 阅读 · 0 评论
分享