C
文章平均质量分 81
hongyansmile
这个作者很懒,什么都没留下…
展开
-
关于洗牌算法的一点思考
最近在做梭哈这个游戏,于是自然而然会用到洗牌算法。洗牌算法网上讲的也不少了,归结起来有如下两种形式。 第一种是每次找一个随机的位置,将54个数依次放到找到的位置中,其思路大概这样的: 1、用一个Bool型数组记录各个位置是否已经放置了数,如果放置则置true,没有则为false。在算法开始时数组初始化为false。 2、每次产生一个0~53的随机数,看这个位置是否已经放置了数,如果已转载 2013-12-23 22:57:52 · 658 阅读 · 0 评论 -
内部排序之五:计数排序、基数排序和桶排序
前言 最后三种排序算法了,由于都不是基于比较的排序,因此这三种排序算法可以以线性时间运行。但是因为限制条件的特殊性,因此应用面没有基于元素比较的排序算法广,但是在很多特定的情况下还是蛮有用途的,而且效率极高。 计数排序 计数排序是建立在这样的前提条件下的:假设n个输入元素的每一个都是0到k区间内的一个整数,其中k为某个整数。因此我们后面所写的程转载 2014-03-17 11:33:58 · 944 阅读 · 0 评论 -
内部排序之三:堆排序
前言 堆排序、快速排序、归并排序(下篇会写这两种排序算法)的平均时间复杂度都为O(n*logn)。要弄清楚堆排序,就要先了解下二叉堆这种数据结构。本文不打算完全讲述二叉堆的所有操作,而是着重讲述堆排序中要用到的操作。比如我们建堆的时候可以采用堆的插入操作(将元素插入到适当的位置,使新的序列仍符合堆的定义)将元素一个一个地插入到堆中,但其实我们完全没必要这么做,我们有执行操作更少的方法,转载 2014-03-17 11:28:22 · 758 阅读 · 0 评论 -
内部排序之二:冒泡排序和选择排序
前言 之所以把冒泡排序和选择排序放在一起,是因为二者的实现代码很相似,而且都是最基本的排序方式,非常容易理解和实现。当然,如果仅仅是为了讲述这两种排序方式,那也根本没必要写这篇博文了。和上篇博文一样,我会在冒泡排序和选择排序原始代码的基础上给出一些改进和优化,这才是本文的重点所在。 原始冒泡排序 冒泡排序的思想很简单,如果要求排序后序列中元素按照从小到大的顺序排列,则转载 2014-03-17 11:20:01 · 1065 阅读 · 0 评论 -
内部排序之四:归并排序和快速排序
前言 之所以把归并排序和快速排序放在一起探讨,很明显两者有一些相似之处:这两种排序算法都采用了分治的思想。下面来逐个分析其实现思想。 归并排序 实现思想 归并的含义很明显就是将两个或者两个以上的有序表组合成一个新的有序表。归并排序中一般所用到的是2-路归并排序,即将含有n个元素的序列看成是n个有序的子序列,每个子序列的长度为1,而后两两合并,得转载 2014-03-17 11:30:54 · 1062 阅读 · 0 评论 -
全排列(百度迅雷笔试题)
全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因此本文对全排列作下总结帮助大家更好的学习和理解。对本文有任何补充之处,欢迎大家指出。 首先来看看题目是如何要求的(百度迅雷校招笔试题)。 用C++写一个函数, 如 Foo(const char *str),转载 2013-12-26 16:00:24 · 752 阅读 · 0 评论 -
动态规划之背包问题
首先是问题描述:给定n种物品和一背包,物品i的重量是wi,其价值是pi,背包的容量是M,问如何选择装入背包中的物品总价值最大? 可以这样理解:背包的背负有上限,因此在这个上限内尽可能多的装东西,并且价值越多越好。 在这里我之想讨论动态规划解决这个问题的详细过程。 动态规划是用空间换时间的一种方法的抽象。其关键是发现子问题和记录其结果。然后利用这些结果减轻运算量。因为背转载 2013-12-23 22:50:23 · 670 阅读 · 0 评论 -
for循环的简介及break和continue的区别
1.for循环 for循环是更加简洁的循环语句,大部分情况下,for循环可以代替while循环、do-while循环。 for循环的格式为: for( 初始语句 ; 执行条件 ; 增量 ) { 循环体 } 执行顺序:1、初始语句 2、执行条件是否符合? 3、循环体 4、增加增量 初始化语句只在循环开转载 2013-12-23 20:56:22 · 1281 阅读 · 0 评论 -
内部排序之一:插入排序和希尔排序的N中实现
前言 本来想将所有的内部排序总结为一篇博文,但是随着研究的深入,还是放弃了这个念头,斟前酌后,还是觉得分开来写比较好,具体原因,看完本篇博文也就自然明了了。 本篇文章主要探讨插入排序和希尔排序,之所将二者放在一起,很明显,是因为希尔排序是建立在插入排序的基础之上的。 注:以下各排序算法的N种实现方法大部分都是我根据算法思想,自己写出来的,或者是参考其本身的经典实转载 2014-03-17 11:21:42 · 883 阅读 · 0 评论