![](https://img-blog.csdnimg.cn/20190829085059955.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
程序员爱酸奶
专注springboot、springcloud、docker、redis。乐于分享,欢迎关注
展开
-
丑数
题目: 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题思路: 要注意,后面的丑数是有前一个丑数乘以2,3,5中的一个得来。因此可以用动态规划去解 同时注意一下,题目意思应该是质数因此,而不是因子,因为8的因子有1,2,4,8直接上代码: pu原创 2018-01-30 18:52:40 · 394 阅读 · 0 评论 -
算法—快速排序(java)
感觉自己的算法真是一塌糊涂,今天开始有时间多看看算法吧,最起码吗一些基础的算法还是应该会的,在学校的时候其实基础的算法都学习过,只是工作中没有怎么用,所以都忘掉了,但是算法才是程序中最美的地方不是么。 今天重新看了看快速排序的算法,以前的总是使用交换排序或者冒泡排序,但是确实效率不高,时间复杂度太高,快速排序算是一种比较巧妙的排序算法吧。 快排算法的大致思路:首先在数组中选择一个基数,然后遍历原创 2018-01-30 11:14:36 · 305 阅读 · 0 评论 -
算法—斐波拉契数列(跳楼梯问题)
问题描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 这道题一看,就会轻易的知道用递归,f(1)=1;f(2)=1;f(n)=f(n-1)+f(n-2); 那么代码就油然而生了,如下: public static int JumpFloor(int target) { if(target<1) return 0;...原创 2018-03-08 13:54:48 · 2425 阅读 · 0 评论 -
算法—二分查找算法
问题描述: 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。测试样例: [1,3,5,7,9],5,3 返回:1暴力求解:public class Bin...原创 2018-03-08 14:18:35 · 301 阅读 · 0 评论 -
堆排序--java
堆是一种完全二叉树,每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。先引入一下完全二叉树的概念。完全二叉树定义:完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。具有性质:1) 深度为k的完全二叉树,至少有2(k...原创 2018-11-27 15:46:08 · 139 阅读 · 0 评论 -
常见的排序算法及其时间复杂度空间复杂度
不多说,先给图:接触的排序算法有冒泡,选择,冒泡和选择差不多,不过冒泡是稳定的,而选择是不稳定的。所谓的稳定性就是指相同的值在排序后的序列中没有改变他们的相对位置。插入排序和希尔排序是一类的。2.希尔排序是插入排序的升级版。具体的算法另再讲。3.快速排序应该是笔试中手写快排见的最多的一种了见博客快速排序算法4.堆排序是一种继续完全二叉树制造大顶堆或小顶堆进行的排序算法,见堆排序算法关于...原创 2018-12-03 09:10:31 · 1026 阅读 · 1 评论 -
冒泡排序和选择排序--java
冒泡排序:是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。冒泡排序是将大元素向后调,小元素向前调,比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;这...原创 2018-12-03 09:58:53 · 155 阅读 · 0 评论 -
插入排序和希尔排序--java
插入排序插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。代码:InsertSort.javaimport java.util...原创 2018-12-03 14:41:07 · 197 阅读 · 0 评论