
算法
leishao_csdn
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
时间复杂度、冒泡、选择、插入排序
时间复杂度 常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。 时间复杂度为一个算法流程中,常数操作数量的指标。常用O(读作big O)来表示。具体来说,在常数操作数量的表达式中,要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果记为f(N),那么时间复杂度为O(f(N))。时间复杂度为一个算法流程中,常数操作数量的指标。常用O(读作big O)来表...原创 2018-10-28 18:29:10 · 282 阅读 · 0 评论 -
递归与分治策略
题目一 #include <vector> #include <string> #include <iostream> #include <string.h> #include <sstream> using namespace std; //输出最长公共子串(LCS) //二维数组veca记录的是两个字符串Xi和Yj的LCS长度...原创 2018-11-22 15:23:07 · 403 阅读 · 0 评论 -
对数器
对数器的概念和使用 有一个你想要测的方法a, 实现一个绝对正确但是复杂度不好的方法b, 实现一个随机样本产生器 实现比对的方法 把方法a和方法b比对很多次来验证方法a是否正确。 如果有一个样本使得比对出错,打印样本分析是哪个方法出错 当样本数量很多时比对测试依然正确,可以确定方法a已经正确。 代码如下: public class Code_03_HeapSort { publ...原创 2018-10-30 17:03:31 · 252 阅读 · 0 评论 -
快排、堆排序
快排 经典快排 <=X X >X 经典快排中间是一个数,左边是小于等于X的范围,右边是大于X的数。可以用荷兰国旗问题来改进快速排序。改进之后的快排: <X =X >X 荷兰国旗问题快排算法如下: package test_01; import java.util.Arrays; public class Nether...原创 2018-10-30 16:46:17 · 307 阅读 · 0 评论 -
用数组结构实现大小固定的队列和栈
数组实现队列 设置3个变量,size记录队列长度,first记录头指针,last记录尾部的下一个节点。 代码如下: public static class ArrayQueue { private Integer[] arr; private Integer size; private Integer first; priva...原创 2018-10-31 21:51:31 · 222 阅读 · 0 评论 -
桶排序 补充问题
给定一个数组,求如果排序之后,相邻两数的最大差值,要求时 间复杂度O(N),且要求不能用非基于比较的排序。(面试高频题) 代码如下: public class MaxGap { public static int maxGap(int[] arr) { if (arr==null && arr.length<2) { re...原创 2018-10-31 21:09:55 · 219 阅读 · 0 评论 -
桶排序、计数排序、基数排序
桶排序、计数排序、基数排序(不是基于比较的排序) 非基于比较的排序,与被排序的样本的实际数据状况很有关系,所以实际中并不经常使用 时间复杂度O(N),额外空间复杂度O(N) 稳定的排序 桶排序算法如下: public class BucketSort { public static void bucketSort (int[] arr) { if (arr==nu...原创 2018-10-31 20:22:20 · 299 阅读 · 0 评论 -
排序算法的稳定性及其汇总
1 快速排序(QuickSort)快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。(1) 如果不多于1个数据,直接返回。(2) 一般选择序列最左边的值作为支点数据。(3) 将序列分成2部分,一部分都大于支点数据,另外一部分都小于支点数据。(4) 对两边利用...转载 2018-10-31 19:59:58 · 16047 阅读 · 2 评论 -
递归、归并排序,master公式
递归 递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。 一个简单的递归例子 public class Test_01 { public static int getMax(int[] arr, int L, int R) { if(L == R) { return arr[L]; } int mid = (L+...原创 2018-10-28 18:49:01 · 491 阅读 · 0 评论 -
动态规划策略
题目一 #include<iostream> #include<stack> #include<fstream> #include<sstream> using namespace std; //计算数字三角形最大路径的值 int Numtri(int n,int **a,int **r){ r[1][1]=a[1][1]; ...原创 2018-11-22 15:25:25 · 607 阅读 · 0 评论