
算法+数据结构
文章平均质量分 59
ricky_zhu_li_ke
这个作者很懒,什么都没留下…
展开
-
实际中常常会用到的算法:堆排序算法实例
下面我们来看一下堆排序算法:堆排序算法实际当中常常会用到,因为堆这个数据结构是非常普通的,计算机中经常会遇到,那么我们就有必要了解一下利用堆来排序,下面的案例就是一个堆排序算法,该算法的运行时间一般,但由于堆这个数据结构经常遇到,所以还是有用武之地的!C语言版本的案例:/*欲详知本程序,请阅读《算法导论》中关于堆排序的章节?*/#include "stdio.h"#include原创 2013-12-06 10:35:22 · 1297 阅读 · 0 评论 -
计算机算法之快速排序、原址排序、递归的最好应用
快速排序是实际应用中常常会用到的一种排序算法:因为它的平均性能非常好:速度也非常快,能够进行原址排序、甚至在虚存环境下也能很好地工作。下面给出一个快速排序在C语言下的实例:#include "stdio.h"#include "conio.h"#define N 24/*快速排序算法:时间复杂度是nlg(n),以2为底,不是10!是实际排序应用中最好的选择,因为它的平均性能非常好原创 2013-12-05 22:04:14 · 2380 阅读 · 2 评论 -
最快的算法而且不用递归!运行时间是线性的!
下面我要来介绍一下计数算法:这个算法的运行时间是线性的!这可是非常的难得!所以应该归于最快的算法之列,而且由于没有使用递归,使得对系统的资源占用也不大,但还是有缺点的,缺点之一就是它不属于原址排序,但它是稳定的。即输出顺序严格按照输入的顺序,即使是相同元素!常用于基数排序。以下内容摘自《算法导论》计数顺序的基本思想是:对每一个输入元素x,确定小于x的元素个数。利用这一信息,就可以直接把x放原创 2013-12-05 21:17:03 · 1153 阅读 · 0 评论 -
不得不说的插入排序、实例及详细解说
很多人都玩过扑克牌,那么我们在将扑克牌正确插入到它在牌中的正确位置的过程就是一个插入排序的插入过程,两者的原理是一模一样的,就是待插入的牌(前面的牌是已经整理好的)和它前面的牌比较,如果前一张牌比它小或相等,则就放在该位置上,如果比它大,则往前挪一张牌,此时它的位置是刚才前一张牌的位置,这时在和前一张牌比,如果还是比它大,则继续往前移动,直到它的前一张牌比它小或等于它为止。同样按从大到小排也是一样原创 2013-12-06 10:58:13 · 933 阅读 · 0 评论 -
一个非常经典的算法题兼面试题
有5瓶药,每个药丸重10克,只有一瓶受到污染的药丸重量发生了变化,每个药丸重9克。给一个天平,怎样一次就能测出哪一瓶是受到污染的药呢? 答案是:分别给5个瓶子编号:1、2、3、4、5,从一号瓶中取出一个药丸,2号瓶中取2个药丸,3号瓶中取3个药丸,4号瓶中取出4个药丸,5号瓶中取出5个药丸。把它们全部放在天平上称一下重量。现在用1*10+2*10+3*10+4*10+5*10的结果减去测出原创 2013-12-23 22:30:15 · 949 阅读 · 0 评论 -
基数排序!一种美妙实用高效的排序算法!
不用递归也能实现像递归那样的高速度排序!而你所要排序的数组的元素值在一个差不多是连续序列时就可以考虑用基数排序,如果对这个算法不清楚的人可以百度一下或者到《算法导论》查看一下相关内容。下面来看一下实例,如果要逆序输出,只要在输出时从末尾开始输出即可不需要改动基数排序的代码。/*欲详知本程序,请阅读《算法导论》中关于基数排序的章节?*/#include "stdio.h"#includ原创 2013-12-24 23:02:14 · 1008 阅读 · 0 评论 -
二叉树的递归实现(一)
这几天看了二叉树,并实际运行了一下,看起来很简单,可是真的不简单。它的实际运行过程并非是我想像的那样!我在纸上画上了一个典型的采用先序顺序建立起来的二叉树函数调用过程(采用递归实现)。下面是我的代码:/*① NLR:前序遍历(PreorderTraversal亦称(先序遍历))——访问根结点的操作发生在遍历其左右子树之前。② LNR:中序遍历(InorderTraversal)——访问原创 2013-12-27 08:34:46 · 1017 阅读 · 0 评论