算法研习
文章平均质量分 72
KingLearnJava
这个作者很懒,什么都没留下…
展开
-
约瑟夫环算法研究
今天在CSDN论坛上看到这个问题:500个小孩围成一圈,从第一个开始报数:1,2,3,1,2,3,1,2,3,……每次报3的小孩退出问最后剩下的那个小孩,在以前500人里是第几个???用LinkedList模拟报数和删除行为,算出最终结果是436。但是当总人数特别大时,此算法效率就非常低。回帖里有人提及这是约瑟夫问题,于是百度了一下,找到一般性的问题描述:已知n个人(以原创 2014-11-27 17:48:10 · 1390 阅读 · 0 评论 -
位运算的运用
搜集自网络判断int型变量a是奇数还是偶数a&1 = 0 偶数a&1 = 1 奇数取int型变量a的第k位 (k=0,1,2……sizeof(int))a>>k&1 (先右移再与1)将int型变量a的第k位清0a=a&~(1<<k) (10000 取反后为00001 )将int型变量a的第k位置1a=a|(1<<k) int型变量循环左移k次,a=a<<k|a>>16-k (设原创 2015-03-12 15:04:26 · 440 阅读 · 0 评论 -
Java语言写的各种排序算法【未完】
import java.util.Arrays;import java.util.Random;/** * 默认升序排列 * 可以调用reverse(int[] arr)方法反转数组使之逆序 * 目前还没有写堆排序 */public class Sorts{ private static Random rand = new Random(); public sta原创 2015-01-14 17:20:01 · 602 阅读 · 0 评论 -
试写快速排序
贴吧看到有人发快速排序,于是找了资料学习了一下。import java.util.Arrays;public class QuickSort2{ public static void quickSort(int[] arr, int i, int j){ if(i >= j) return; //排序结束 int m = i, key原创 2014-12-11 00:42:49 · 515 阅读 · 0 评论 -
遍历m个元素取k个的递归解法
今天帮人做蓝桥杯题目,正好需要用到m个元素取k个值,把其中的方法提炼出来作为工具类:import java.util.Arrays;import java.util.ArrayList;/** * 遍历m个元素取k个。 * 将问题抽象为在数组arr[m]中取k个元素,将所有取法存入ArrayList中。 */public class Combination{ pr原创 2014-12-08 19:17:20 · 751 阅读 · 0 评论 -
求一亿以内的素数
晚上由于要帮老师算一个数学猜想,需要一个素数集合,于是写了一个。思路:如果一个数不能被所有比它小的素数整除,那么它也是素数。MAX就是素数的上限,计算一亿以内的素数,总共用时171330毫秒,约为171秒。public class FindPrime { static ArrayList list = new ArrayList();//存储素数 public static原创 2014-12-07 23:19:35 · 3511 阅读 · 0 评论 -
输出回文数字
贴吧上看到有人发蓝桥杯题目。观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。本题要求你找到一些5位或6位的十进制数字。满足如下要求:该数字的各个数位之和等于输入的整数。【输入格式】一个正整数 n (10【输出格式】若干行,每行包含一个满足要求的5位或6位整数。数字按从小到大的顺序排列。如原创 2014-12-07 22:36:25 · 916 阅读 · 0 评论 -
一道画图题
【问题描述】在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色。 下图给出了一个画了两个矩形的例子。第一个矩形是(1,1) 到(4, 4),用绿色和紫色表示。第二个矩形是(2, 3)到(6, 5),用蓝色和紫色表示。图中,一共有15个单位的面积被涂上颜色,其中紫色部分被涂了两次,但在计算面积时只计算一原创 2014-12-09 17:45:59 · 1314 阅读 · 2 评论 -
蓝桥杯真题:abcdefghijklmnopqrs循环106次,重复删奇数位字符,最终剩下的字符?
晚上有群友出题:abcdefghijklmnopqrs循环106次,组成新的2014个字符的字符串,然后删掉奇数位的字符,再次组成新的字符,在删掉奇数字符,最后剩下一个字符,这个字符是啥先用笨办法,模拟每一次删除操作,直到只剩下最后一个值第一个元素的索引是0,本来应该依次删除 2,但是删了0之后,所有的位置都往前移了一位,所以接下来要删除的索引是1。所以i只需要自增1。原创 2014-12-17 00:36:16 · 1604 阅读 · 0 评论 -
位运算的几点用处
还在自学Java中,暂不明白位运算有哪些用处,上午上已经工作的朋友请教,了解了几个运用位运算的场景,日后如果有更多例子,再行添加。1.乘以2,除以2i>1的效率比i*2和i/2更高。i2. 产生-1 -2 -3...min -1 -2.......的序列这是某通信系统中用到的序列import java.util.concurrent.atomic.Atom原创 2014-12-17 13:05:08 · 797 阅读 · 0 评论 -
Java将递归改成循环的通用方法
用Stack或LinkedList来实现内存中的出栈入栈过程,即可将递归改成循环。第一个例子用求阶乘,顺便加了迭代方法。import java.util.Stack;public class Factorial{ public static void main(String[] args){ Factorial f = new Factorial();原创 2015-01-19 11:29:24 · 8326 阅读 · 0 评论