![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
leishao_csdn
这个作者很懒,什么都没留下…
展开
-
时间复杂度、冒泡、选择、插入排序
时间复杂度常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。时间复杂度为一个算法流程中,常数操作数量的指标。常用O(读作big O)来表示。具体来说,在常数操作数量的表达式中,要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果记为f(N),那么时间复杂度为O(f(N))。时间复杂度为一个算法流程中,常数操作数量的指标。常用O(读作big O)来表...原创 2018-10-28 18:29:10 · 246 阅读 · 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 · 371 阅读 · 0 评论 -
对数器
对数器的概念和使用有一个你想要测的方法a, 实现一个绝对正确但是复杂度不好的方法b, 实现一个随机样本产生器 实现比对的方法 把方法a和方法b比对很多次来验证方法a是否正确。 如果有一个样本使得比对出错,打印样本分析是哪个方法出错 当样本数量很多时比对测试依然正确,可以确定方法a已经正确。代码如下:public class Code_03_HeapSort { publ...原创 2018-10-30 17:03:31 · 225 阅读 · 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 · 267 阅读 · 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 · 191 阅读 · 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 · 185 阅读 · 0 评论 -
桶排序、计数排序、基数排序
桶排序、计数排序、基数排序(不是基于比较的排序)非基于比较的排序,与被排序的样本的实际数据状况很有关系,所以实际中并不经常使用 时间复杂度O(N),额外空间复杂度O(N) 稳定的排序桶排序算法如下:public class BucketSort { public static void bucketSort (int[] arr) { if (arr==nu...原创 2018-10-31 20:22:20 · 269 阅读 · 0 评论 -
排序算法的稳定性及其汇总
1 快速排序(QuickSort)快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。(1) 如果不多于1个数据,直接返回。(2) 一般选择序列最左边的值作为支点数据。(3) 将序列分成2部分,一部分都大于支点数据,另外一部分都小于支点数据。(4) 对两边利用...转载 2018-10-31 19:59:58 · 15940 阅读 · 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 · 438 阅读 · 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 · 556 阅读 · 0 评论