算法
文章平均质量分 75
清风乐逍遥
喜欢计算机喜欢了解新知识喜欢解决问题后的喜悦
展开
-
冒泡排序改进
平常写冒泡排序法时,都是直接两个for循环就搞定了,但这其实还是可以优化一下的,可以在某一次遍历过程中,如果没有发现数据进行交换,则可以确定排序已经完成,这样就可以跳出循环了。代码如下:/* Filename:bubleSort.cpp Author: xiaobing E-mail: xiaobingzhang29@gmail.com Date: 2013-08-25*原创 2013-08-25 19:37:20 · 1208 阅读 · 0 评论 -
快速排序算法实现,模拟讲解
快速排序是一个比较好的算法,但不好理解,我用模拟的方法来讲解,这样比较容易懂,其平均时间复杂度为O(nlog(n)),最极端状态为O(n2)对于排序算法来说是比较快的,但排序算法是递归的调用,会占用大量资源原创 2013-08-25 21:09:06 · 2058 阅读 · 0 评论 -
堆排序的详细讲解及实现
堆排序:特点 堆排序(HeapSort)是一树形选择排序。堆排序的特点是:在排序过程中,将R[l..n]看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系(参见二叉树的顺序存储结构),在当前无序区中选择关键字最大(或最小)的记录堆排序与直接选择排序的区别直接选择排序中,为了从R[1..n]中选出关键字最小的记录,必须进行n-1次比较,原创 2013-08-27 16:18:33 · 3228 阅读 · 1 评论 -
归并排序模拟讲解
归并算法速度比较快,但也难理解,我用很详细的叙述将 整个过程给模拟了出来原创 2013-08-27 23:25:46 · 2563 阅读 · 0 评论 -
Dijkstra算法模拟讲解
dijkstra算法,是一个求单源最短路径算法 其算法的特点为: 层层逼进,有点类似宽度搜索的感觉 其需要的数据结构为: int map[N][N] 所有点之间的权表 int dis[N] 所有点到源点的最短距离 int prev[N] 存储每个点的前一个经过的点,用于输出路径 int used[N] 用于存储已经求出最短路径的点 则总的点减去used中的点,为还没有找出最短路径的点 初始化时:map为实际存储的权,如果某一边没有,则设置为无穷大INF,自身设置0原创 2013-08-30 15:11:47 · 1110 阅读 · 0 评论 -
Kruskal算法模拟讲解
Kruskal 算法是一个求最小生成树的算法,即求最小的开销等 算法可以这样,要求得最小生成树,那么n个节点只能包括n-1条边 所以我们应该转换为寻找这最短的n-1条边,因此,可以先对所有的 边进行从小到大排序,每次取出一条边来进行试探,看是否够成环, 如果不构成环,那么肯定是最短的路径了,因为每次都是取最小 的边来试探,最终可以求得最小的生成树代价和。原创 2013-08-31 21:00:35 · 1233 阅读 · 0 评论