![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA算法
Elay老师
正在路上的程序猿
展开
-
Java算法学习——快速幂
快速幂快速幂:顾名思义就是快速的求一个数的n次幂。例如:an,直接的算法就是累乘,这样的计算方法时间复杂度为O(n)。而快速幂可以降低时间复杂度至O(log(n))。那么快速幂是如何降低时间复杂度的呢?接下来我举个例子,如果我们要求an,实数n满足2K,那么an可以表示为((a2)2)2…的形式,而普通算法则为a* a *a…的形式。因此快速幂只要进行K次平方运算就可以得到最终结果。时间复杂...原创 2019-07-04 23:49:53 · 479 阅读 · 0 评论 -
java算法学习——调整整数数组的顺序,使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。首先我们先分析一下题干,奇数和奇数之间,偶数和偶数之间的相对位置不变,所以要保证排序具有稳定性,而具有稳定性的排序有:插入,归并,冒泡排序,这是我们可以可以采用的排序方法。而快速排序和选择排序是不稳定的,所以不能用这两种方法来排序...原创 2019-07-06 18:16:22 · 581 阅读 · 0 评论 -
Java算法学习——排序算法(冒泡排序,快速排序)
排序算法定义:对一序列对象根据某个关键字进行排序。衡量排序算法的指标:时间复杂度:一个算法执行所耗费的时间。空间复杂度:运行完一个程序所需内存的大小。稳定性:如果一个序列中有两个相等的对象(A=B),此时A排在B前面,排序之后A仍在B的前面,则该排序算法稳定。反之,则不稳定。内排序:所有排序操作都在内存中完成。外排序:由于数据太大,因此把数据放到磁盘里,而排序需要通过内存和磁盘的数...原创 2019-07-23 18:49:32 · 214 阅读 · 0 评论 -
Java算法学习——排序算法(简单选择排序,堆排序)
接上一篇文章我们依旧把各排序算法的比较图放出来:1.简单选择排序(Selection Sort):简单选择排序,最稳定的排序算法之一,无论什么数据进去时间复杂度都是O(n2)。由于时间复杂度较高,所以适用于小规模的数据。它的好处就在于不占用额外的内存空间。简单选择排序是一种简单直观的排序算法。它的工作原理是:先在未排序的序列中找到最大(小)元素,存放到排序序列的起始位置。然后再从剩余未排...原创 2019-07-24 19:51:24 · 126 阅读 · 0 评论 -
Java算法学习——排序算法(直接插入排序,希尔排序)
排序算法第三篇先放排序算法比较表:直接插入排序(Insertion Sort):正如这个排序算法的名字,这是一个简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后往前扫描,找到相应的位置并插入。算法描述:步骤一:从第一个元素开始,该元素可以被认为是已排序元素。步骤二:取出下一个元素,在已排序的元素中从后往前扫描,如果该元素大于新元素则往后移一位,直...原创 2019-07-24 23:48:00 · 186 阅读 · 0 评论 -
Java算法——排序算法(归并排序)
归并排序各种排序算法比较:归并排序(Merge Sort):和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多。因为时间复杂度始终为O(nlogn),代价是需要占用额外的内存空间。归并排序是建立在归并操作上的一种有效算法。该算法是一个采用分治法(Divide and Conquer)非常典型的应用,归并排序是一种稳定的排序方法,将已有序的子序列合并,得到完全有序的序...原创 2019-07-25 20:39:27 · 115 阅读 · 0 评论