数据结构与算法
MingChaoSun
潜心技术,不离不弃!
展开
-
C++ SUNDY算法(BM算法的改进)
字符串查找算法中,最著名的两个是KMP算法Knuth-Morris-Pratt)和BM算法(Boyer-Moore)。两个算法在最坏情况下均具有线性的查找时间。BM算法往往比KMP算法快上3-5倍。但是BM算法还不是最快的算法,这里介绍一种比BM算法更快一些的查找算法。例如我们要在"substringsearchingalgorithm"查找"search"第一步,把子串与文本左边对齐原创 2015-02-01 13:46:55 · 2343 阅读 · 0 评论 -
经典的7种排序算法 原理C++实现
经典的7种排序算法 原理C++实现排序是编程过程中经常遇到的操作,它在很大程度上影响了程序的执行效率。7种常见的排序算法大致可以分为两类:第一类是低级排序算法,有选择排序、冒泡排序、插入排序;第二类是高级排序算法,有堆排序、排序树、归并排序、快速排序。下面就分别介绍一下这几种排序算法,并会给出c++的实现,实现代码均经过测试。一、低级排序算法1. 选择排序排序过程:给定一个原创 2014-09-19 12:24:12 · 14772 阅读 · 2 评论 -
C++ 递归位置排列算法及其应用
废话不多说,我们先看一下位置排序的算法:#include using namespace std; int n = 0; int m = 2; int l = 0; int a[100]; void solve(int l);int main(){ cout<<"请输入位数 n "<<endl; cin>>n; solve(l); return 0;}原创 2014-09-19 13:39:58 · 1288 阅读 · 0 评论 -
C++ 算法大全
第3章 控制语句 /* 1、打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153 = 13 + 53 + 33。 */ #include void main() { int i, a=0, b=0, c=0; for(i=100;i{ a=i%10; b=i/10%10; c=i/1转载 2014-09-16 00:29:57 · 9637 阅读 · 2 评论 -
grep为何如此之快
下面是GNU grep的原作者MikeHaertel 在FreeBSD邮件列表中对 “GNU grep为什么比BSD grep要快” 这个问题所做的回答,解释了grep是如何进行快速搜索的,下面是邮件正文内容:why GNU grep is fastMike Haertel mike at ducky.net Sat Aug 21 03:00:30 UTC 2010•翻译 2015-02-01 11:06:44 · 3115 阅读 · 0 评论 -
n个整数全排列的递归实现(C++)
全排列是非常常用的一个小算法,下面是n个整数全排列的递归实现,使用的是C++#include using namespace std;int n = 0;void swap(char *a ,char *b){ int m ; m = *a; *a = *b; *b = m;}void perm(char list[],int k, int m ){ int原创 2014-10-27 09:58:49 · 7066 阅读 · 0 评论 -
利用不相交集类制作迷宫游戏(数据结构课程设计——迷宫老鼠)
之前大一的时候有几天闲来无事,为了学习做了一个可以自动生成迷宫,可以寻找最短路径的小游戏,现在整理分享一下简单介绍:利用不相交集类考虑一个迷宫的生成,一个简单算法就是从各处的墙壁开始(除入口和出口之外)。此时,不断地随机选择一面墙,如果被该墙分割的单元彼此不联通,那么就把这面墙拆掉。重复这个过程直到开始单元和终止单元联通,那么就得到一个迷宫。实际上不断的拆掉墙壁直到每个单元都可以从其他单元到达更好(原创 2015-04-19 11:25:13 · 3214 阅读 · 6 评论 -
C++ KMP 算法
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法).KMP算法的关键是根据给定的模式串W1,m,定义一个next函数,next函数包含了模式串本身局部匹配的信息.#include #include #include #include #include原创 2015-02-01 14:27:50 · 1491 阅读 · 0 评论 -
C++BM算法
BM算法是一种非常著名的字符串查找算法:在字符串查找算法中,最著名的两个是KMP算法(Knuth-Morris-Pratt)和BM算法(Boyer-Moore)。两个算法在最坏情况下均具有线性的查找时间。但是在实用上,KMP算法并不比最简单的c库函数strstr()快多少,而BM算法则往往比KMP算法快上3-5倍。下面我们介绍一下BM算法:1,BM算法是Boyer-Moore算原创 2015-02-01 11:42:22 · 6772 阅读 · 3 评论 -
k-means像素聚类
使用K-means进行像素聚类python通过使用K-means对像素聚类以此进行图像分割K-means聚类简介:K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。因此,简单来说Kmeans是一种将输入数据划分为k个族的简单原创 2015-11-26 10:06:12 · 22631 阅读 · 5 评论