
Java算法大集合
本专栏是为了面试同学快速复习相关算法以及新手程序员学习入门级算法所准备的,本专栏旨在为大家复习算法更简单更全面。
Bean冷的心
不要害怕被利用,利用你,证明你有利用价值。
展开
-
(纯白话算法系列)归并排序,时间复杂度分析、代码演示,堆是什么?
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。白话说:所谓归并排序,望文生义,就是把两个东西合并在一起了,那么是什么东西合并在一起了呢?是两个已经排好序的数组...原创 2019-07-28 21:39:12 · 1226 阅读 · 2 评论 -
(纯白话算法系列)堆排序,时间复杂度分析、代码演示,堆是什么?堆的数据结构底层
堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。想要了解堆排序,那么必须要明白堆这种数据结构,先介绍一下堆结构,如果已经明白了可以直接跳过。什么是堆堆是一种非常重要的数据结构,其本身是由完全二叉树构成的,二叉树想必大家都明白是什么,如果不明白请百度…堆需要分...原创 2019-07-27 22:47:54 · 1331 阅读 · 0 评论 -
(纯白话算法系列)快速排序以及随机快排,时间复杂度分析、代码演示
快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。本篇部分词义解释:基数:指数组中一个元素,数组中其他元素都和该元...原创 2019-07-26 16:52:48 · 2493 阅读 · 0 评论 -
递归算法时间复杂度分析(master公式使用)
看了左神的求递归算法时间复杂度分析受益颇多,在这里写一下收获:master公式的使用T(N) = a*T(N/b) + O(N^d)1) log(b,a) > d ->复杂度为O(N^log(b,a))2) log(b,a) = d ->复杂度为O(N^d*logN)3) log(b,a) > d ->复杂度为O(N^d)什么...原创 2019-07-24 16:48:14 · 4262 阅读 · 0 评论 -
什么是对数器?对数器的作用是什么?
对数器是什么?通常我们在笔试的时候或者参加编程大赛的时候,自己实现了一个算法,但是不能够判断该算法是否完全没问题,如果在比赛平台上验证,通常只会告诉你有没有错误,出了错不会告诉你哪里有问题,对于排错来说是非常坑爹的,所以对数器就横空出世了,对数器就是用一个绝对OK的方法和随机器生成的样本数据进行合体,如果你的算法是没问题的,那么和对数器的这个百分之百正确的方法一个元素一个元素的比较,也一定是eq...原创 2019-07-24 13:25:18 · 13704 阅读 · 6 评论 -
(纯白话算法系列)插入排序、时间复杂度分析、代码演示
定义插入排序(Insertion sort)是一种简单直观且稳定的排序算法。如果有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法...原创 2019-07-24 09:13:41 · 1468 阅读 · 0 评论 -
(纯白话算法系列)选择排序、时间复杂度分析、代码演示
定义:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。纯白话说:所谓选择排序,即每次循环挑出最小的数,将其与本次循环的起点位置...原创 2019-07-23 22:05:46 · 314 阅读 · 0 评论 -
(纯白话算法系列)冒泡排序、时间复杂度分析、代码演示
定义:冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中...原创 2019-07-23 17:42:00 · 446 阅读 · 0 评论