girlkoo的专栏

专注于嵌入式、软件开发,热爱技术交流

常用排序算法——快速排序法

快速排序法是一种高效的排序法,算法的最终性能取决于选取的中间值,直接实现的快速排序法如下:#include #include static int partition( int* array, int start, int end){ int key = array[start]; ...

2013-12-27 10:23:46

阅读数:3358

评论数:1

常用排序算法——堆排序

堆排序的逻辑非常简单,但是效率较高,代码如下:#include #include class heap { public: heap(int* array, size_t len):arr (array), length(len){ size_t point = (l...

2013-12-27 10:17:19

阅读数:2729

评论数:0

常用排序算法——归并排序法

归并排序采用的是分治思想,将数组不断分解为子数组,直到子数组只有一个元素,每次分解对应一个归并函数,归并函数可以将当前分解的两个子数组合并起来。有两种方式可以实现归并排序,第一种是递归方式实现的,代码如下:#include static void merge( int* array, int*...

2013-12-27 10:11:38

阅读数:3418

评论数:0

常用排序算法——冒泡、插入、选择

冒泡排序法是初学者最早接触的排序法,实现比较简单,代码如下:#include void bubble_sort(int *array, int len){ for(int i = 1; i != len; ++i){ for(int j = 0; j != len-i;...

2013-12-27 10:05:34

阅读数:4791

评论数:0

交换二叉树的左右子树——非递归方式

这是华为的一道机试题,其实并不难,不让用递归可以用栈来解决,具体的代码如下:#include #include struct node{ char data ; struct node* left ; struct node* right ; }; struct t...

2013-12-27 09:31:18

阅读数:7219

评论数:0

最短路径算法——Floyd

Floyd算法相比Dijkstra算法最大的区别是计算出了任意点起始到任意点的最短路径,算法也不难理解,需要注意的是三层for循环的顺序问题,k必须为最外层循环,具体的代码如下:#include #include #include void shortest_floyd(const std...

2013-12-24 10:29:14

阅读数:3149

评论数:0

最短路径算法——Dijkstra

Dijkstra的最短路径算法是基于前驱顶点的最短路径计算的,整体上来讲还是比较简单的,下面是代码:#include #include #include void shortestpath( const std::vector >& paths, int from, std...

2013-12-24 10:25:44

阅读数:3506

评论数:1

最小生成树算法——Kruskal

Kruskal算法的原理是先将图中的所有边按照权从小到大排序,然后循环取边,判断添加上该边后是子图中否有闭合回路,如果没有,则添加该边,否则舍弃该边。直到所有的边都遍历一遍。 我认为该算法的核心是排序和判断闭合,判断闭合的原理还没有真正搞明白,不过这种算法很容易记忆,暂且记住!! 下面是具体的代码...

2013-12-20 09:49:36

阅读数:3240

评论数:1

最小生成树算法——Prim

Prim算法是任选一顶点作为起始点,从当前已纳入的顶点与未纳入的顶点间的所有路径中找出权最小的一条进行连接,循环直到所有的顶点都被纳入。 代码如下:#include #include #include #include class graphic { public: graphi...

2013-12-20 09:46:59

阅读数:3178

评论数:0

栈——中缀表达式转后缀表达式

中缀表达式转后缀表达式的算法较为简单,采用栈来实现。规则如下: 遇到数字:直接输出遇到'(':压栈遇到')':持续出栈,如果出栈的符号不是'('则输出,否则终止出栈。遇到符号则判断该符号与栈顶符号的运算优先级,如果栈顶符号的运算优先级高,则出栈并输出,直到优先级相等或栈为空;如果栈顶符号的运算...

2013-12-20 09:35:35

阅读数:20903

评论数:6

KMP字符串查找

KMP算法 KMP字符串查找算法的目的是减少不必要的比较次数,举个简单的例子,从字符串A:"abcdeabcdfg"中查找字符串B:"abcdf"。 使用普通的查找法查找字符串的步骤是这样的: 先拿A[0:4]分别与B对应位置的字母比较,如果不相等则拿A[1...

2013-12-20 09:31:53

阅读数:4402

评论数:2

提示
确定要删除当前文章?
取消 删除
关闭
关闭