Tag Archives: 算法

C语言实现 trie 统计单词频率

前面在解决圣经背诵问题使用 C 语言解决圣经背诵问题中,涉及到一个问题,就是统计文件中各个单词数量的问题,在网上找到了一个解决办法就是 Trie。
Trie,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用[……]阅读全文

使用 C 语言解决圣经背诵问题

PHP 解决圣经背诵问题 这一篇中我们使用 PHP 解决了圣经背诵问题,但是程序运行速度不尽人意,一般要3秒或更多的时间才能得出结果。
我们可以使用 time 命令来看一下运行时间 (关于 time 命令的说明见这一篇 Linux 下使用 time 命令查看程序的执行时间)。
结果如下:[……]阅读全文

PHP 解决圣经背诵问题

在网上看到这样一个题目,听说是腾讯的面试题目,于是决定先用 PHP 来尝试试解决这个问题。
题目如下:

我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员,那么帮助我们完成这个

[……]阅读全文

要求返回一个验证码,并且不能同时存在容易混淆的0和O

在 CNBLOGS 上看到了这么一题:

题目要求差不多是这样:完成下面的方法,要求返回一个验证码,并且不能同时存在容易混淆的0和O。每个字母取得的概率要相同。
他先给出了一部分代码:

/// <summary>
        /// 生成一个随机验证码,并且不能同时出现容易

[……]阅读全文

C 语言如何实现向量(字符串)旋转(循环位移)

《编程珠玑》上有这样一题:
将一个 n 元一维向量左旋转 i 个位置。例如,当 n = 8, i = 3 时,
向量 abcdefgh 旋转为 defghabc 。简单的代码使用一个 n元中间向量
在 n 步内完成工作。能否仅使用 10 字节额外的存储空间,在正比于 n 的
时间内完成向量旋[……]阅读全文

快速排序 quicksort

快速排序是一种采用分治法的比较排序算法。
一般分为三个步骤完成:
一、分解:将数组 A[p..r] 分解为两个(可能为空)子数组 A[p..q – 1] 和
A[q + 1..r],使得 A[p..q – 1] 中的每个元素都小于等于 A[q],而且,
A[q + 1..r] 中的每个元素都[……]阅读全文

堆排序 Heapsort

堆排序是一种以(二叉)堆为数据结构来管理算法执行的原地排序算法。
二叉堆是一种数组对象,可以被视为一颗完全二叉树。二叉堆分为最大堆和最小堆。
对于数组:

[20, 17, 13, 12, 10, 9, 7, 6, 5,2, 1]




它可以就可视为一个最大堆,一下为一个二叉树的示意图[……]阅读全文

算法-插入排序(insetion sort)

插入排序(insetion sort),就是将每个带排序序元素逐个插入到有序元素序列中的合适位置。

function insertSortBasic(aArr){
	var	iLength = aArr.length,
		i,
		j,
		k,
		mTemp;
	for(i =

[……]阅读全文

算法-冒泡排序(bubble sort)

现在想再次巩固一下算法。重新温习一边,并用javascript一些示例。

冒泡排序(bubble sort),最基础的排序算法,它重复遍历要排序的数组,一次比较两个元素,如果他们的顺序错误就把他们交换过来。重复遍历数组 直到不需要交换为止,即数组完成排序。

次算法的基本过程:为了便于理解[……]阅读全文