算法学习
Heroin X
文艺情怀的理工直男
展开
-
ABC循环打印
多线程循环打印问题package jstudy.thread;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * @author Heroin X * @date 2020/9/7 19:56 */public class ThreadTest1 { pr原创 2020-09-08 17:35:23 · 404 阅读 · 0 评论 -
面试中常见的单例模式
1.双重校验锁package jstudy.concur;public class Singleton { private volatile static Singleton uniqueInstance; private Singleton(){} public static Singleton getUniqueInstance(){ if (uniqueInstance == null){ synchronized (S原创 2020-09-08 17:29:58 · 192 阅读 · 0 评论 -
二分搜索问题
文章目录1-引言2-搜索一个数3-搜索左边界4-搜索右边界1-引言【1】参考二分查找算法细节详解,顺便写了首诗—by labuladong2-搜索一个数3-搜索左边界4-搜索右边界原创 2020-06-16 22:34:19 · 187 阅读 · 0 评论 -
LeetCode-3.31-912-M-排序数组(Sort an Array)
文章目录思路解法1-冒泡解法2-选择解法3-插入解法4-希尔解法5-归并解法6-快排解法7-堆排解法8-计数解法9-桶排序解法10-基数给你一个整数数组 nums,请你将该数组升序排列。Given an array of integers nums, sort the array in ascending order.思路依次使用十大经典排序。解法1-冒泡class Solution...原创 2020-03-31 17:21:22 · 250 阅读 · 0 评论 -
十大经典排序算法——堆排序(Heap Sort)
文章目录算法代码算法堆是一种优先队列,两种实现,最大堆和最小堆,由于这里是升序,以最大堆来介绍。代码package sort;import java.util.Arrays;/** * @author Heroin X * @date 2020/3/30 15:46 */public class HeapSort { public static void main(St...原创 2020-03-30 16:53:44 · 208 阅读 · 0 评论 -
十大经典排序算法——快速排序(Quick Sort)
文章目录算法代码1-双边扫描代码2-单边扫描代码3-非递归算法(1)快速排序的核心思想也是分治法,分而治之。它的实现方式是每次从序列中选出一个基准值,其他数依次和基准值做比较,比基准值大的放右边,比基准值小的放左边,然后再对左边和右边的两组数分别选出一个基准值,进行同样的比较移动,重复步骤,直到最后都变成单个元素,整个数组就成了有序的序列。代码1-双边扫描 public void q...原创 2020-03-21 17:54:09 · 448 阅读 · 0 评论 -
十大经典排序算法——归并排序(Merge Sort)
文章目录算法代码1-递归代码2-非递归参考的文章:(1)这或许是东半球讲十大排序算法最好的一篇文章(2)排序算法 - 面试中的排序算法总结(3)必学十大经典排序算法,看这篇就够了算法(1)归并排序的核心思想是分治,分而治之,将一个大问题分解成无数的小问题进行处理,处理之后再合并,这里我们采用递归来实现;(2)时间复杂度O(nlogn)代码1-递归 /** *...原创 2020-03-21 11:39:09 · 421 阅读 · 0 评论 -
十大经典排序算法——希尔排序(Shell Sort)
文章目录算法代码算法(1)希尔排序这个名字,来源于它的发明者希尔,也称作“缩小增量排序”,是插入排序的一种更高效的改进版本。(2)插入排序对于小规模数据数据或者基本有序或者时十分高效。其大规模的乱序数组的时候效率是比较慢的,因为它每次只能将数据移动一位。(3)希尔排序为了加快插入的速度,让数据移动的时候可以实现跳跃移动,节省了一部分的时间开支。基本思想:首先它把较大的数据集合分割成若...原创 2020-03-21 09:56:32 · 205 阅读 · 0 评论 -
十大经典排序算法——插入排序(Insertion Sort)
文章目录算法代码算法(1)整个数组分为有序和无序两个状态,右边无序,左边有序,初始左边没有元素;(2)从index=1 开始,左边只有index=0一个元素,先把index=1位置的元素值存储下来给tmp;(3)比较左侧的元素是否比tmp大,如果大,则tmp最终要移到左边去。由于tmp值已经存下来了,所以先不用管它。(4)此时需要处理的是移动左边元素,空出位置,one by one, 先...原创 2020-03-20 22:45:34 · 220 阅读 · 0 评论 -
十大经典排序算法——选择排序(Selection Sort)
文章目录算法代码1代码1-2 优化算法(1)算法基本思想是每一次选择出所有元素中最小(大)元素到第1,2,3…n个位置上;(2)每次的选择都是简单遍历;(3)时间复杂度也是O(n^2)代码1(1)index的存在意义没有了!可以直接将index换成i public int[] select(int[] arr){ int len = arr.length; ...原创 2020-03-20 21:46:26 · 170 阅读 · 0 评论 -
十大经典排序算法——冒泡排序(Bubble Sort)
文章目录普通优化1优化2本专栏首先介绍十大经典排序算法。参考的文章有:(1)这或许是东半球讲十大排序算法最好的一篇文章(2)排序算法 - 面试中的排序算法总结(3)必学十大经典排序算法,看这篇就够了普通(1)两重循环,两两依次比较,按照谁大(小)谁向后移动,第一次内层循环结束后,就会将最大(小)的元素置于最后一个位置;(2)第二次循环只需要比较前n-1个元素的大小了,因此j ...原创 2020-03-20 20:58:06 · 328 阅读 · 2 评论