![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构算法
zhuyufufu
这个作者很懒,什么都没留下…
展开
-
约瑟夫环问题
约瑟夫环问题(Josephus): 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。 这是面试常用的算法题目,下面给出解法代码: [code="java"] package com.zas.test; import java.util.ArrayList; import java.util.List; /** * 约瑟夫环问题 * @...原创 2013-12-05 10:54:07 · 78 阅读 · 0 评论 -
结合字符串相似度算法改进变位词相似度算法
前一篇博文: [url]http://zhuyufufu.iteye.com/blog/1989482[/url] 实现了我的一个相似度简单算法,但是其缺陷十分明显。这两天查找了一些资料,找到了应用编辑距离计算字符串相似度的算法。 俄罗斯科学家Vladimir Levenshtein在1965年提出这个编辑距离概念。 现在我就用这个算法实现变位词的相似度计算。也算是站...2013-12-15 22:37:19 · 141 阅读 · 0 评论 -
最小生成树之Kruskal算法
[b]上接面向对象方式实现最小生成树算法[/b] [url]http://zhuyufufu.iteye.com/blog/1989304[/url] 这篇文章实现[b]最小生成树[/b]的[b]Kruskal算法[/b] [b]Kruskal算法:[/b] Kruskal算法思想不同于Prim算法,Kruskal算法是一种按照连通网中边的权值的递增顺序构造最小生成树...2013-12-14 15:30:07 · 122 阅读 · 0 评论 -
变位词相似度算法
前面写过一个[b]变位词算法[/b]的博文: [url]http://zhuyufufu.iteye.com/blog/1988169[/url] 当时没有给出[b]变位词相似度算法[/b],现在补上一个简单相似度算法: 一.是变位词与彻底不是变位词都有明确的定义 二.其余情况处理如下: 1. 取两个单词长度较大的作为基准单词,如:abc与acff 则取acf...2013-12-14 11:56:54 · 182 阅读 · 0 评论 -
面向对象方式实现最小生成树算法
[b]最小生成树[/b] 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 最小生成树可参考:[url]http://baike.baidu.com/view/288214.htm[/url] 下面实现最小生成树的Prim算法。 网上包括很多论坛里实现最小生成树的...2013-12-13 18:21:27 · 119 阅读 · 0 评论 -
变位词算法
[b]变位词[/b] 一种把某个词或句子的字母的位置(顺序)加以改换所形成的新词,英文叫做anagram,词典把这个词翻译成“变位词”。 最近参加了一个面试,其中一道上机题目就是有关[b]变位词[/b]的。 题目描述大致如下: 1.给出一个两个字符串互为变位词的相似度算法。当他们为变位词的时候输出1.0;当他们长度不同且没有相同字母时输出0;其他...2013-12-11 15:50:30 · 1037 阅读 · 0 评论 -
回文判断
[b]回文[/b] 把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环。 [b]锦字回文[/b] 前秦时期,秦州刺史窦滔因得罪了苻坚的手下大官被流放到流沙县。夫妻天各一方,他的妻子苏蕙特地在一块锦缎上绣上840个字,纵横29个字的方图,可以任意地读,共能读出3752首诗,表达了她对丈夫的思念与关心之情。 后遂以“锦字书”等指前秦苏蕙...原创 2013-12-10 11:44:38 · 150 阅读 · 0 评论 -
堆排序
[b]堆排序:[/b] 堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素。 Java代码实现示例: [code="java"] package com.zas.algorithm; import java.util.Arrays; /** * 堆排序 * @author zas */ ...原创 2013-12-07 23:02:22 · 70 阅读 · 0 评论 -
快速排序
[b]快速排序(Quicksort)[/b]是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 Java代码实现示例: [code="java"] ...原创 2013-12-06 18:34:46 · 77 阅读 · 0 评论 -
归并排序
[b]归并排序:[/b] 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个有序的子序列,再把有序的子序列合并为整体有序序列。 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。值得注意的是归并排序是一种稳定的排序方法。 将已有序的子序列合并,得到完全有序...原创 2013-12-06 13:05:35 · 64 阅读 · 0 评论 -
插入排序
[b]插入排序:[/b] 每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。 包括:直接插入排序,二分插入排序(又称折半插入排序),链表插入排序,希尔排序(又称缩小增量排序)。属于稳定排序的一种(通俗地讲,就是两个相等的数不会交换位置) 。 Java代码实现: [code="java"] pa...原创 2013-12-06 10:53:08 · 97 阅读 · 0 评论 -
选择排序
选择排序: 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。 Java代码实现如下: [code="java"] package com.zas.algorithm; import java.util.Arrays; /** * 选择排序 * @author z...原创 2013-12-05 22:32:58 · 60 阅读 · 0 评论 -
冒泡排序
冒泡排序(Bubble Sort)是计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 冒泡排序算法的运作如下: 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点...原创 2013-12-05 22:14:58 · 61 阅读 · 0 评论 -
Java数组删除指定元素
[code="java"] package com.zas.util; import java.util.Arrays; public class ArrayUtil { /** * 删除数组的第 i 个元素(从0开始) * @param arr * @param pos * @return 成功 true 失败 false */ ...2014-09-18 11:30:09 · 547 阅读 · 0 评论