随笔分类 -  算法设计与分析

递归求1-100之和
摘要:递归求1-100之和 /* *求1-100之和 */ function sum(num1, num2) { var num = num1 + num2; if (num2 + 1 > 100) { return num; } else { return sum(num, num2 + 1) } } 阅读全文

posted @ 2021-04-09 18:00 zhishiyv 编辑

回溯法-背包问题
摘要:问题描述: 给定n种物品和一背包。物品i的重量是wi,其价值为pi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大? n个物品中选择部分物品,可知,问题的解空间是子集树。比如物品数目n=3时,其解空间树如下图 思路: 边为1代表选择该物品,边为0代表不选择该物品。回溯搜索 阅读全文

posted @ 2020-12-10 17:15 zhishiyv 编辑

回溯法-迷宫问题
摘要:问题描述: 定义一个二维数组N*M(其中2<=N<=10;2<=M<=10),如5 × 5数组下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它 阅读全文

posted @ 2020-12-10 15:40 zhishiyv 编辑

快速排序
摘要:1.概念 快速排序 快速排序,听这个名字就能想到它排序速度比较快方法,是一种分治思想,现在各种语言中自带的排序库很多使用的都是快速排序。快速排序是一种原地排序,只需要一个很小的栈作为辅助空间,空间复杂度为O(log2n),适合在数据集比较大的时候使用。时间复杂度比较复杂,最好的情况是O(n),最差的 阅读全文

posted @ 2020-01-01 11:32 zhishiyv 编辑

大数相加
摘要:大数相加,是在求职过程中遇到的一个精巧的笔试题目,觉得有意思,在这里记录一下, 大数相加,大概是说,要输入两个很大的数,进行一个加法运算, 由我们要编写一段程序,用较高的运算效率完成运算; 解题思路: 大数位数较多,所以考虑采用逐位相加的思想, (1) 定义两个字符型变量以存储两个大数, (2)字符 阅读全文

posted @ 2018-09-20 21:08 zhishiyv 编辑

插入排序 (Java实现)
摘要:该算法是假设已有序列是有序序列, 从首元素(首元素为单个元素,肯定是有序的...)开始分析,对其他元素的位置进行有序的确定; 排序算法 1 public class InsertionSort { 2 public static void insertionSort(int a[]) { 3 4 i 阅读全文

posted @ 2018-09-11 09:57 zhishiyv 编辑

归并排序 (Java实现)
摘要:该算法是将两个有序序列合并为一个有序序列问题的形式化表示。 首先,序列A[p,q] 和序列A[q+1,r]是有序的,输出A[p,r]是有序的,这是算法的整体流程; 维护三个变量,i,j,k,分别初始化为0,0,p; 定义两个数组,分别是L(L长度为q-p+1),R(R长度为r-q),以存储上述的两个 阅读全文

posted @ 2018-09-11 09:56 zhishiyv 编辑

导航

统计

点击右上角即可分享
微信分享提示