算法数据结构
jerryzhou;
Talk is cheap,show me the code
展开
-
排序算法(一)冒泡排序
排序算法(一)冒泡排序冒泡排序是一种基础的排序算法,O(n)=n^2。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。因为越大的元素会慢慢浮到顶端,像气泡一样,故称作冒泡。详细描述参见链接,本文不再赘述。本人水平有限,若各位客官发现错误之处,欢迎指正,有什么好的建议,还望不吝赐教!原创 2018-02-03 11:07:32 · 245 阅读 · 0 评论 -
算法:合并两个有序整数数组
描述: 有arr1,arr2两个已排序数组,设计算法,合并两个数组,并且合并后的数组仍是有序的不得使用已有的任何库函数或数据结构,只通过基本数组完成以下的结构是O(n)=n^2,是不合适的 for(int i = 0;i<arr1.length:i++){ for(int j = 0;j <arr2.lenght;j++){ //TODO } }请设...原创 2019-09-24 19:24:43 · 1329 阅读 · 0 评论 -
算法:爬楼梯问题及几种解法
有n级楼梯,有2种爬法,1次1级,或1次2级,问,n级楼梯有多少种爬法?一、递归求解当n < 0时,无解,当n = 1 时,f ( n ) = 1, 当n = 2时,有两种方法,一次1级爬2次,或一次2级,f (n) = 2。当 n > 2时,第一次跳一级还是两级,决定了后面剩下的台阶的跳法数目的不同:如果第一次只跳一级,则后面剩下的n-1级台阶的跳法数目为f(n-1);如果...原创 2019-08-16 12:04:01 · 22563 阅读 · 0 评论 -
算法:台阶蓄水问题
描述: 给一个数组,脑补成二维柱状图,然后加水,能存多少水?输入: 【0,1,0,2,1,0,1,3,1,2,1】注:蓝色部分输出: 6 注:红色部分,解释,能存6个单位的水...原创 2019-08-15 10:38:28 · 858 阅读 · 0 评论 -
算法:电商订单问题
描述: 有一批电商订单用数组表示如下,i,j为商品序号,k为商品种类对应的数量,n为商品类别总数。order_list=[[i,j,k]]。现设计一个算法,计算总订单量。输入: order_list=[[0,2,5],[3,4,6],[2,4,7]];n=6输出: list=[5,5,12,13,13,0,0];解释:0号商品5件,1号商品5件,2号商品12件……直接思路: 双层遍历,外层遍...原创 2019-08-09 21:11:02 · 2734 阅读 · 0 评论 -
KMP算法学习笔记
参考1简书:https://www.jianshu.com/p/18410598c061(DFA_KMP) 参考2:https://segmentfault.com/a/1190000008575379(BruteForce、KMP) 参考2原文:https://subetter.com/algorithms-and-mathematics/kmp-algorithm.html ...原创 2018-09-13 11:58:31 · 460 阅读 · 0 评论 -
HashMap 和 HashTable 到底哪不同 ?
原文:http://www.cnblogs.com/xinzhao/p/5644175.html 转自:http://www.importnew.com/24822.html 原文出处: 程序员赵鑫HashMap和HashTable有什么不同?在面试和被面试的过程中,我问过也被问过这个问题,也见过了不少回答,今天决定写一写自己心目中的理想答案。代码版本...转载 2018-08-24 17:21:20 · 141 阅读 · 0 评论 -
list集合中元素、对象排序
参考:HashMap的2种遍历(entrySet、keySet)(详细分为4个方法)list集合中元素、对象排序对普通的元素可使用Collection中的sort(); 对对象类型而言,可以通过实现Comparator接口,重写compare方法实现。//1.对集合中元素排序 List nums = new ArrayList(); nums.ad...原创 2018-07-25 11:14:56 · 631 阅读 · 0 评论 -
消除集合中重复元素
消除集合中重复元素,根本考差点即list与set的区别。 简单点说:list 代表有索引编号的集合,可以存放重复的对象,可以在指定的位置插入对象。set存放不重复的对象,只能有一个null元素。知道两者的区别,就可以利用Set不允许重复值的特点,消除集合中的重复元素。例:1.利用ArrayList去除集合中重复字符串元素 ArrayList list = n...原创 2018-07-25 10:48:43 · 3456 阅读 · 0 评论 -
java常用8大排序算法
参考:http://www.jb51.net/article/70396.htm&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;这篇文章主要介绍了Java如何实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序,分享给大家一起学习。一、分类1)插入排序(直接插入排序、希尔排序) 2)选择排序(选择原创 2018-05-27 18:14:38 · 273 阅读 · 0 评论 -
算法:螺旋折线问题
引言:2018蓝桥杯 Java B 个人解析 该题方法很多,就不列举了。题目7:螺旋折线如图p1.pgn所示的螺旋折线经过平面上所有整点恰好一次。 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度。 例如dis(0, 1)=3, dis(-2, -1)=9 给出整点坐标(X, Y),你能计算出dis(X, Y...原创 2019-08-14 23:36:19 · 2299 阅读 · 4 评论 -
排序算法(三)选择排序
基础:排序算法(三)选择排序算法思想: 选择排序是一种不稳定的排序方法,每一趟从待排序的数据元素中选出最小(或最大) 的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 其主要应用于计算机和数学领域。它的主要优点与数据移动有关。 如果某个元素位于正确的最终位置上,则它不会被移动。选择排原创 2018-02-05 14:49:17 · 358 阅读 · 0 评论 -
排序算法(二)插入排序
基础:排序算法(二)插入排序 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。 插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。 插入排序#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;/*...原创 2018-02-05 14:34:32 · 226 阅读 · 0 评论 -
字符串相关算法
1、将字符串中的字符倒序//使用reverseString str = "abcdefg";StringBuffer sb =new StringBuffer(str);System.out.println(sb.reverse().toString());//自定义方法1public static String strReverse(String str) { ...原创 2018-09-15 17:18:52 · 347 阅读 · 0 评论