数据结构与算法
互联网极客
执行力+团队合作+思考力=成功
展开
-
Java版 堆排序
1、基本思想: 堆排序是一种树形选择排序,是对直接选择排序的有效改进。 堆的定义下:具有n个元素的序列 (h1,h2,...,hn),当且仅当满足(hi>=h2i,hi>=2i+1)或(hi 思想:初始时把要排序的数的序列看作是一棵顺序存储的二叉树,调整它们的存储序,使之成为一个 堆,这时堆的根节点的数最大。然后将根节点与堆的最后一个节点交换。然后对前面(n-1)个数转载 2015-04-10 11:29:00 · 467 阅读 · 0 评论 -
Java编写一个截取字符串的函数,输入一个为字符串和字节数,输出按字节截取的字符串。要求不能出现截半的情况
题目 :编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。需求分析:1、输入为一个字符串和字节数,输出为按字节截取的字符串--------------》按照字节[byte]截取操作字符串,先将String转换转载 2015-07-22 14:46:34 · 5591 阅读 · 3 评论 -
用Java实现二叉树
以下代码实现了二叉树的存储,查找,遍历(前序、中序、后序)package cn.itcast;public class Node { public int value; public Node left; public Node right; public void store(int value){ if(value < this.value){ if(left =原创 2015-07-22 16:56:14 · 708 阅读 · 0 评论 -
next数组介绍
首先看看next数组值的求解方法例如: 模式串 a b a a b c a c next值 0 1 1 2 2 3 1 2 next数组的求解方法是:第一位的next值为0,第二位的next值为1,后面求解每一位的next值时,根据前一位进行比较。首先将前一位与其next值对应的内容进行比较,如果相等,则该位的next值就是前一位的next值加上1;如果转载 2015-07-29 20:34:29 · 913 阅读 · 0 评论 -
如何对数组的两个子有序段进行合并
如何对数组的两个子有序段进行合并原创 2015-04-21 08:35:59 · 788 阅读 · 0 评论 -
如何把一个数组循环右移k位
把一个数组循环右移K位原创 2015-04-15 12:44:17 · 2114 阅读 · 0 评论 -
如何判断一个字符串是否由相同的字符组成
如何判断一个字符串是否由相同的字符组成原创 2015-04-15 17:02:24 · 5101 阅读 · 0 评论 -
Java实现二叉排序树
二叉树的实现原创 2015-04-15 20:51:12 · 2360 阅读 · 2 评论 -
如何统计一行字符中有多少个单词
统计字符串中单词的个数原创 2015-04-15 19:14:04 · 1293 阅读 · 1 评论 -
求最大子数组之和
求最大子数组之和原创 2015-04-13 08:52:00 · 743 阅读 · 0 评论 -
Java版快速排序
Java快速排序原创 2015-04-06 16:49:14 · 1033 阅读 · 0 评论 -
Java版冒泡排序
Java版冒泡排序原创 2015-04-05 20:23:49 · 515 阅读 · 0 评论 -
Java版归并排序
归并排序是利用递归与分治技术将数据序列分为越来越小的半子表,再对半子表排序,最后再用递归方法将排好的半子表合并为越来越大的有序序列。归并排序算法的原理如下:对于给定的一组记录(假设有n个记录),首先将每两个相邻的长度为1的序列进行归并,得到n/2(向上取整数)个长度为2或1的有序子序列,再将其两两合并,反复执行此过程,直到得到一个有序序列。所以,归并排序的关键就是前两步:第一步:划转载 2015-04-05 21:46:06 · 593 阅读 · 0 评论 -
Java版插入排序
Java版插入排序原创 2015-04-05 16:48:43 · 501 阅读 · 0 评论 -
Java版选择排序
Java版选择排序原创 2015-04-05 16:11:57 · 614 阅读 · 0 评论 -
Java实现字符串反转
问题:给一个字符串,比如 “I love china”, 把字符反转后变成 “china love I”思路:先把字符串从第一个字符与最后一个字符对换,第二个字符和倒数第二个字符对换,这样,我们就把每一个单词位置互换了。但是我们要求单词里面字符的顺序是不能变的,所以,我们要把每一个单词里面的字符从头到尾对换一下。这样就可以得到我们想要的字符串了。实现:因为这转载 2015-04-10 15:41:39 · 1135 阅读 · 0 评论 -
如何判断一个数是否是2的n次方
2的n次方可以表示为:2^0,2^1,2^2,2^3,2^4......2^n。最直观的思想是用1做移位操作,然后判断移位后的值是否与给定的数相等,具体的实现代码如下:public class moveByte { public static boolean isPower(int n){ if(n<1) return false; int i=1; while(i<=n原创 2015-04-10 11:56:25 · 9631 阅读 · 2 评论 -
Java版 非递归折半查找
Java数据结构——折半查找原创 2015-03-25 11:13:22 · 784 阅读 · 0 评论