![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
什么是快乐
这个作者很懒,什么都没留下…
展开
-
Java斐波拉数列的三种实现方式
求解斐波那契数列例子。求一个问题的解需要用到之前的数据,依次递归。 解决方法(以斐波那契数列为例): 1、纯递归实现,问题是需要不停的递归,时间复杂度高 public static int Fibonacci_recursive(int n){ if(n<=0){ return 0; }else if(n==1){ return 1; } else{ return F原创 2021-08-05 22:24:58 · 183 阅读 · 0 评论 -
排序算法-Java
冒泡排序 冒泡排序的基本思想是:对比相邻的元素值,如果满足条件就交换元素值,把较小的元素值移动到数组前面,把大的元素值移动到数组后面(也就是交换两个元素的位置),这样数组元素就像气泡一样从底部上升到顶部。 冒泡排序的算法比较简单,排序的结果稳定,但时间效率不太高。Java 中的冒泡排序在双层循环中实现,其中外层循环控制排序轮数,总循环次数为要排序数组的长度减 1。而内层循环主要用于对比相邻元素的大小,以确定是否交换位置,对比和交换次数依排序轮数而减少。 public int[] BubbleSort原创 2020-09-08 10:56:00 · 102 阅读 · 0 评论 -
第K大元素方法
问题:在长度为N的乱序数组中寻找第k(n>=k)大的元素。 (1)最简单直接:先排序再找 最简单直接的想法是首先进行排序。假设元素的数量不大,比如才几千个,那就可以先进行排序,比如用快排或堆排,平均时间复杂度为O(N*logN),然后取出前k个,于是总时间复杂度为O(NlogN)+O(k)=O(NlogN)。当然这种做法是浪费了不少的时间的,因为题目只要求找出第k大的元素,而不需要数据是有序的。 (2)部分元素排序:k次冒泡 当k比较小的时候,k趟排序是个比较不错的方法。我们只需要排序最大的k个元素即原创 2020-08-10 10:54:42 · 422 阅读 · 0 评论