
算法
琚建飞
这个作者很懒,什么都没留下…
展开
-
map 按键/值排序
思路:把Entry<key,value>的集合放入List中,利用其sort函数完成排序。 public static void main(String[] args) { Map<Integer,Integer> map = new TreeMap<>(); map.put(2,4); map.put(5,3); map.put...原创 2019-03-29 12:54:07 · 2365 阅读 · 2 评论 -
求所有素数
素数,又称质数,其定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。 question:求100以内的所有素数。 thinking:首先想到遍历这100个数,然后循环体内判断这个数是否为质数,假如是质数则打印。 如何判断一个数是否为质数? answer:只要 大于1 且 小于其本身的所有数 和它取余都不为0即可。 那么体现在代码中,则可以这样写: public static void m...原创 2019-03-29 09:12:34 · 1655 阅读 · 1 评论 -
快速排序
在排序算法中,快速排序的速度首屈一指。其基本思想为: 将待排序的序列的最左边的值设为基准值。 将序列中比基准值小的数据放到基准值左边,比基准值大的数据放到基准值右边。 将左右两部分数据,分别执行第一步和第二步。直到待排序的序列个数为1时停止递归。 代码实现: public static void quickSort(int[] values, int left, int right){ ...原创 2019-03-20 15:41:47 · 206 阅读 · 2 评论 -
冒泡排序
最简单的排序算法。其基本思想为:两两比较,将值小的数放到后面,直到得出最小值。然后循环。 如果需要排序的数的个数为 n 个,那么循环的次数为 n -1 。其代码实现为: public static void main(String[] args) { int[] values = {2,4,6,1,0}; int[] result = sort(values); Syste...原创 2019-03-19 22:30:12 · 228 阅读 · 0 评论 -
脑筋急转弯
1、有两只一样长度的香,一支香烧完的时间是一个小时,你能用什么办法来确定15分钟的时间? 2、有两位盲人,他们都各自买了两对黑袜和两对白袜,八只袜子的布质、大小完全相同, 而每对袜子都有一张商标纸连着。两位盲人不小心将八对袜了混在一起。他们每人怎样才能取回黑袜和白袜各两对呢? 3、有两个房间,一间房里有三盏灯,另一间房有控制着三盏灯的三个开关,这两个房间是分割开的,从一间里不能看到另一间的情况原创 2017-08-15 08:14:06 · 807 阅读 · 13 评论 -
七个算法题
1、水仙花数 问题:求1000以内的水仙花数。 注:水仙花数,即它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。n为这个数的位数,比如153,n为3。 解决方案:首先假设一个三位数,然后给出这个三位数的百位、十位、个位的表示,最后代入公式计算。 实现代码 for (int i = 100; i 1000; i++) { int原创 2017-08-12 11:25:40 · 849 阅读 · 7 评论 -
1000个苹果分十箱
题目:1000个苹果放入10个箱子。客户如果需要获得1~1000个苹果中的任意个数,都可以整箱搬,而不用拆开箱子。如何装? 参考解析:题目要求必须整箱搬,那么每个箱子的苹果个数就是个定值。也就是说我可以看成是10个数,通过任意组合相加,可以得到1-1000内的任意数。其实,如果你对二进制敏感的话,应该会想到,这其实就是二进制数的表示问题。1位二进制数可以表示0-1,2位二进制数可以表示0-3,1原创 2017-07-30 22:08:52 · 3320 阅读 · 29 评论 -
【C】五大排序算法
插入排序 直接插入 希尔排序 选择排序 直接选择排序 推排序 交换排序 冒泡排序 快速排序 归并排序 基数排序 插入排序 直接插入 说明 将一个记录插入到一个已经排好序的表中,以得到一个记录增一的有序表。并且最关键的一点就是它把当前元素大的记录都往后移动,用以腾出“自己”该插入的位置。当n-1趟插入完成后该记录就是有序序列。直接插入简单明了,但速度较慢。它的时原创 2017-05-14 22:10:09 · 972 阅读 · 38 评论 -
【Java】数组--二分法查找
代码public class TestSearch{ public static void main(String args[]){ int[] a = {1,3,5,7,8,9,12,34,56,88}; int i = 56; if(binarySearch(a,i) == -1) System.out.print(原创 2017-02-25 15:05:16 · 727 阅读 · 17 评论 -
【Java】数组--数三退一实例
代码public class Test3Quite{ public static void main(String args[]){ boolean[] arr = new boolean[500]; //声明一个有500个数的数组 for(int i=0; i&lt;arr.length; i++){ //为这500个数全赋值为true原创 2017-02-25 11:45:35 · 654 阅读 · 15 评论 -
【Java】数组--利用冒泡算法给日期排序
代码public class TestDateSort { public static void main(String[] args) { Date[] days = new Date[5]; //元素为引用类型的数组中的每一个元素都需要实例化 days[0] = new Date(2006, 5, 4); days[1] = new Da原创 2017-02-25 10:09:00 · 1900 阅读 · 9 评论 -
【Java】数组实例--自动排序
代码public class NumSort{ public static void main(String args[]){ int[] a= new int[args.length]; for(int i=0; i<args.length; i++){ a[i] = Integer.parseInt(args[i]); //数据类原创 2017-02-24 15:37:04 · 2860 阅读 · 7 评论 -
【Java】递归实例
定义 递归调用:指在方法执行过程中出现该方法本身的调用。 计算阶乘 public class Test { public static void main(String arg[]) { System.out.println(method(5)); } public static int method(int n) {原创 2017-02-07 11:02:59 · 524 阅读 · 3 评论