
算法
两把伞
你要的,时间都会给你
展开
-
(Leetcode 142)Linked List Cycle (II) (快慢指针详解)
Leetcode141题和142题很相似,都涉及到了快慢指针的算法。快慢指针就是设置两个指针,一个快指针,一个慢指针来达到解题的目的。下面分为以下几个模块来讲解:解第141题 解第142题 为什么快指针一定要设置为慢指针的2倍 快慢指针的拓展应用一、Leetcode 141题题目为:Linked List CycleGiven a linked list, determine i...转载 2020-04-04 17:47:51 · 266 阅读 · 0 评论 -
关于递归的理解
代码如下:// 递归练习public class recursionTest { public static int getMax(int[] arr,int l,int r){ if(l == r){ return arr[l]; } int median = (int)(l + r)/2; ...原创 2019-11-05 09:47:04 · 187 阅读 · 0 评论 -
JAVA--选择排序
选择排序的工作原理是:在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。此定义是 维基百科 中的定义,而且有动图,可以去看看。。。代码如下 /** * 选择排序:在待排序的数组中选取到一个最小(大)的元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中寻找...原创 2018-11-23 16:27:44 · 121 阅读 · 0 评论 -
冒泡排序算法详解
本文关于冒泡算法的介绍是参考:经典排序算法(1)——冒泡排序算法详解 这篇文章的,该文章也有讲述如何实现冒泡排序的。冒泡排序(Bubble Sort) 是一种典型的交换排序算法,通过交换元素的位置进行排序。算法的基本思想冒泡排序的基本思想是:从无序序列头部开始,进行两两比较,根据大小交换位置,知道最后将最大(小)的数据交换到了无序队列的队尾,从而成为了有序序列的一部分;下一次继续这个过...转载 2018-11-23 12:17:06 · 491 阅读 · 0 评论 -
JAVA---插入排序
插入排序:插入排序就是每一步将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。插入效果如图:代码实现如下 // 插入排序 public static void insertionSort(int[] arr){ if(arr == null || arr.length < 2){ return; ...原创 2018-11-23 15:03:31 · 120 阅读 · 0 评论 -
图解排序算法(三)之堆排序
文章来源:图解排序算法(三)之堆排序真心不错。。。预备知识堆排序堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最好和最坏,平均时间复杂度为O(nlogn),它也是不稳定排序。首先了解一下堆结构:堆堆是具有以下性质的完全二叉树:每个节点的值都大于或等于其左右节点的值,称之为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我...转载 2018-11-28 16:28:28 · 176 阅读 · 0 评论