
java与数据结构
文章平均质量分 75
java与数据结构
HFish24
这个作者很懒,什么都没留下…
展开
-
二分查找通关秘籍
一直以来,二分查找法都是所有算法中最让我头疼的一个tag,并因此错过不止一个很好的offer。二分查找法看似简单,实则变种多,边界条件不好把握。经过一段时间的摸索,终于有了一些自己的感悟。如果写的不对,还请评论区的大佬们赐教。言归正传:首先二分查找的先诀条件是有序数组。只有一个数组是有序的时候才可以使用二分查找法,否则不可用。当我们试图使用二分查找法去解题时,也首先要明确数组是否是有序数组或者能否构建有序数组或者是否是有序数组的变种。依据第一条,任何二分查找的题目都是在利用两个规律。即有序数组原创 2021-09-29 16:54:24 · 244 阅读 · 0 评论 -
LeetCode搜索旋转数组与if else if的先后执行顺序
LeetCode 33搜索旋转数组是二分查找法的一道进阶题目。要求在旋转数组中查找数组索引并把时间复杂度是O(logN)级别。首先回顾一下二分查找法。二分查找法思路的核心是针对已排序数组,每次找数组中心位置的数,如果比 target 大,就把右指针置到中心位置左边;如果比 target小,就把左指针置到中心位置右边。循环查找直到找到。二分查找法对应的是leetcode 704题。非常基础。搜索...原创 2020-04-27 10:21:13 · 260 阅读 · 0 评论 -
如何分析一个算法的时间复杂度
一直以来,分析一个算法的时间复杂度对我而言都是很头疼的。直到今天又拿起数据结构…算法的时间复杂度就是一个算法执行次数的量级,而量级就是多项式的最高次幂。假如代码的执行次数是n(n+1)/2,那最高次幂是n^2,那么多项式的量级就是n方,代码的时间复杂度就是O(n ^2)那么如果看算法的执行次数呢?几个题就说明白了。代码块1:for(int i=0;i<10;i++) i++;上...原创 2020-04-21 11:07:35 · 9563 阅读 · 0 评论 -
leetcode207.课程表与拓扑排序
一、拓扑排序百度百科:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个...原创 2020-04-19 18:24:37 · 301 阅读 · 0 评论 -
java实现归并排序
两篇写的极好的归并排序博客java实现归并排序图解排序算法之归并排序原创 2020-04-12 15:39:20 · 202 阅读 · 0 评论 -
java实现插入排序
原理:取出当前元素存起来,然后向前遍历,寻找插入位置,把前面大的数字往后挪,直到前面的数都比它小,插入。时间复杂度:最好:正序O(N)最差:O(N^2) 平均:O(N^2)代码:public class InsertSort { public static void main(String[] args){// int[] arr = new int[10];// ...原创 2020-04-03 19:18:31 · 193 阅读 · 0 评论 -
java实现选择排序
原理:选择排序就是每次从当前元素的后面选择一个最小的元素和当前元素进行交换。然后时间复杂度:O(n^2)代码:public class SelectSort { public static void main(String[] args){ int[] arr = new int[30]; for(int i=0;i<arr.length;i++...原创 2020-04-03 18:36:21 · 163 阅读 · 0 评论 -
哈夫曼树(构建以及计算加权路径长度)
今天做远景的笔试题,遇到了这么一道题,求{11,8,6,5,2}构成的哈夫曼树的加权路径长度。好长时间没看数据结构,居然忘记怎么求了,该死。直接百度原题,好多答案居然都是错的。要不就是光有答案没有过程。在这里把哈夫曼树的构建和加权路径长度写一下。构建过程:1.对数组按从大到小排序。对于上面这个{11,8,6,5,2}数组,排序完就是{2,5,6,8,11}2.将最小的两个数加起来,求得一...原创 2020-03-22 17:29:44 · 14591 阅读 · 0 评论 -
java实现冒泡排序
基本思想:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止(大话数据结构)白话翻译:从位置0开始,比较前i个数中,相邻两个数的大小。大的换到后面。小的换到前面。这就像轻的水泡向上冒。所以叫冒泡排序冒泡排序中,一次排序,就会把前***length-i***个数中最大数沉底。比如下图:冒泡排序总是从0开始,到上次排好序的位置为止。两两交换逆序元素代码:public clas...原创 2020-04-02 16:57:16 · 654 阅读 · 0 评论