算法
irak
这个作者很懒,什么都没留下…
展开
-
0-1背包问题
0-1背包问题部分背包问题0-1背包问题解决思路(动态规划)包不够大包够包够大,且可以放入包够大,但不放放与不放做比较,取最大值 部分背包问题 部分背包求的是最大值,里面的物品可以分割,所以我们只需要求出物品的性价比,然后再排序就可以解决。 0-1背包问题 0-1背包,问题就在于你放还是不放。 假如我有三个物品:A(重:1,价值:2元)B(重:2,价值:4元)C(重:3,价值:3元) 然后我的背包...原创 2019-01-04 01:54:41 · 350 阅读 · 0 评论 -
Algorithm-归并排序、快速排序
归并、快速归并快排 归并 注:图是别人的. 由图可以看出来,归并就是: 先将数组对半分,1分为2,2再对半分,一直分到只有单个的时候。 对只能分到单个对时候停止分割,对两个进行比较排序, 第一次排序好后,至少2个数是顺序的,之后是递归的过程,同理归并别的分组。 下面代码分析下: // a为需要排序的数组,low是低位,high是高位 static void sort(int[] a...原创 2019-01-17 11:47:06 · 175 阅读 · 0 评论 -
最大子序列的分而治之 o(nlogn)
int Max3( int A, int B, int C ) { /* 返回3个整数中的最大值 */ return A > B ? A > C ? A : C : B > C ? B : C; } int DivideAndConquer( int List[], int left, int right ) { /* 分治法求List[left]到Lis...转载 2016-07-08 12:28:36 · 387 阅读 · 0 评论 -
一元多项式的乘法与加法运算
设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 输出格式: 输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0; 输入样例: 4...转载 2016-07-09 21:04:11 · 667 阅读 · 0 评论 -
打印选课学生名单
假设全校有最多40000名学生和最多2500门课程。现给出每个学生的选课清单,要求输出每门课的选课学生名单。 输入格式: 输入的第一行是两个正整数:N(\le≤40000),为全校学生总数;K(\le≤2500),为总课程数。此后N行,每行包括一个学生姓名(3个大写英文字母+1位数字)、一个正整数C(\le≤20)代表该生所选的课程门数、随后是C个课程编号。简单起见,课程从1到K编号。 ...原创 2016-07-14 10:45:10 · 2910 阅读 · 0 评论 -
详解堆排序
堆排序最大堆创建过程堆排序过程 最大堆创建过程 int[] s = {-2, 1, -3, 4, -1, 2, 1, -5, 4}; 存在这么一个数组 将数组看成一个完全二叉树 堆排序的第一步就是先让无序的数组变成一个大顶堆。 大顶堆的定义可以理解为:父节点比子节点大的完全二叉树。 要将上面的树变成大顶堆,最合理的方式就是从底部开始向上,底部有序了,无序的节点和有序的节点就可以在尽量少的步骤...原创 2019-02-04 22:17:45 · 150 阅读 · 0 评论 -
排序算法比较
冒泡: static int[] bubbleSort(int[] data) { System.out.println(Arrays.toString(data)); for (int i = data.length - 1; i >= 0; i--) { for (int j = 0; j < i; j++) { if (d...原创 2019-02-14 01:13:55 · 180 阅读 · 0 评论