![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 76
wasdasdfqwer
一路向前...
展开
-
约瑟夫算法(数学分析法)
//看了帖子后觉得有趣就实现了一把递归的约瑟夫算法 package test; /** * 500个小孩围成一圈,从第一个开始报数:1,2,3,1,2,3,1,2,3,……每次报3的小孩退出 问最后剩下的那个小孩,在以前500人里是第几个??? */ public class Test { /** * 约瑟夫标准循环非递归解法 * @param n * @原创 2014-07-04 09:16:43 · 1994 阅读 · 0 评论 -
快速排序java
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据, 然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。 然后对关键字前面和后面的部分分别再进行上面的步骤。 一趟快速排序的算法是: 1)设置两个变量i、j,排序开始的时候:i=0,j=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即key=原创 2015-08-21 00:26:28 · 604 阅读 · 0 评论 -
最有效的方法来增加在Map中的值
关于这个是在一个博客上看到的,就像试一下,测试结果出人意料。 看到这个标题可能还是觉得有点抽象,那么首先来一段代码: int count = map.containsKey(string) ? map.get(string) : 0; map.put(string, count + 1); 其中contains(),get() and put()方法都要在map中根据key查找,需要朝找三次原创 2015-08-04 00:27:17 · 4258 阅读 · 0 评论 -
插入排序和希尔排序
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序, 插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。 public static void sortInsert(int[] datas){ int N = datas.length;原创 2015-08-15 17:57:29 · 669 阅读 · 0 评论 -
实现Comparable接口对树形结构数据进行排序
背景: 数据库中无序的数据要按树形结构出输出, 如图所示: 每一个记录 对应 一条数据库的 数据, 需求来了,那么怎么实现呢,首先最简单的是直接从数据库 按顺序 查出,然后依次打印, 简单点说吧,oracle数据库有相应的语句可以实现,很容易,但是sql server 没有,尝试了下没有成功, 考虑数据库的兼容性,就像把数据到后台去排序, 那么,这也就是这篇雯所说的内容原创 2015-02-05 22:44:55 · 1515 阅读 · 0 评论 -
Integer源码 转2进制转16进制
其中有一个私有方法,toUnsignedString(int i, int shift) 是为 public static String toHexString(int i) { return toUnsignedString(i, 4); } public static String toBinaryString(int i) { return t原创 2014-09-03 11:33:35 · 1207 阅读 · 0 评论 -
关于2进制直接转16进制
实际中估计也没有这个需求,只是写写。 能不能直接由2进制转为16进制呢,最直接的办法是通过位移操作,也就是通常所说的 每四位二进制对应一个16进制, 假如java中有一种 二进制的基础类型 Binary bi = new Binary(11010101);这样的话 进行 bi >>> 4 位移操作 就可以很容易转换了,关于这个可以参考Integer.java中的toHexString(in原创 2014-09-03 17:53:11 · 1987 阅读 · 0 评论 -
10进制转2进制和16进制
package test2; public class Test { public static void main(String[] args) { System.out.println(toBinary(9)); System.out.println(toHex(559)); System.out.println(Integer.toBinaryString(9)); S原创 2014-09-02 09:55:24 · 1111 阅读 · 0 评论 -
判断两个字符串是否互为变位词
题目: Write a method to decide if two strings are anagrams or not. 翻译: 写一个方法来判断两个字符串是否互为变位词。 注:如果构成两个字符串的字符完全相同,而对应字符所处的位置不同,则称这两个字符串互为变位词。如:"abbfcad"和"facbdab"互为变位词。转载 2014-07-03 17:02:19 · 5091 阅读 · 2 评论 -
关于一个算法题的两点新思路
在网上看到一个算法题,不是很难,搜一下也有解决办法,但是一般都是几层for循环,试着写了下 /** * 给你一组字符串 如 {5,2,3,2,4,5,1,2,1,5},让你输出里面出现次数最多且数值最大的一个,出现几次 * 优点:时间复杂度为O(n) * 缺点:产生一些多余的空间,如 6,7,8没有的数也会分配一个数组空间,但是基本可以忽略 * 限制:原创 2014-09-12 09:58:47 · 1411 阅读 · 5 评论