算法
River丶
这个作者很懒,什么都没留下…
展开
-
每日一个小算法-简化版桶排序
桶排序思想主要是将要排序的数组中的值,使对应编号也就是对应下标的桶中值加1,桶为数组的项。最后遍历桶的数组。打印出排序号的值。 但是必须知道要排序数组的最大值和最小值。有待改进。 public static void main(String[] args) { int[] reordering = new int[] { 1, 9, 10, 9, 5, 5, 5, 5, 1, 2,原创 2016-04-25 13:23:05 · 281 阅读 · 0 评论 -
每日一个小算法(一) 数组中连续个数组成的和最大
题目:输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2, 因此输出为该子数组的和18。 public class max { public static vo原创 2016-02-26 01:00:18 · 502 阅读 · 0 评论 -
每日一个小算法(二)-插入排序
插入排序 1.通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入。 插入排序非常类似于整扑克牌。 在开始摸牌时,左手是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左地进行比较。无论什么时候,左手中的牌都是排好序的。 如果输入数组已经是排好序的话,插入排序原创 2016-02-26 20:27:48 · 363 阅读 · 0 评论 -
每日一个小算法-冒泡排序
冒泡排序就是相邻的两个值进行排序。每次排序确定一个最大的或者确定一个最小的位置。每次确定一个值的位置之后。下一次遍历将少进行一次遍历。 public static void sort() { int[] beforeSort = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 2131, 3232, 445, 5, 6, 4, 67,原创 2016-04-26 10:58:09 · 310 阅读 · 0 评论 -
每日一个小算法。快速排序
快速排序就是特别版的冒泡排序。最差情况下时间复杂度为O(N*N),平均复杂度为O(N*logN)。基于二分思想。下面public class Sort { public class Sort { static int[] sortArray = new int[] {6,6,6,6,61,2,7,9,3,4,5,10,8 }; static int n = sortArray.length原创 2016-04-26 12:25:07 · 313 阅读 · 0 评论 -
递归的方法进行全排列
用递归的方法全排列。例如求0~5之间的所有输出组合。 public class fullList { static int n = 5; static int[] a = new int[n + 1]; static int[] book = new int[n + 1]; // int step = 1; public原创 2016-05-04 13:05:52 · 320 阅读 · 0 评论