每天分享几道Java面试题,码字不易,喜欢的可以关注一波,共同学习。201911211. 插入排序通过构建有序序列,对于未排序数据,在已排序序列中向后向前扫描,找到相应的位置并插入。插入排序非常类似于整扑克牌。在开始摸牌时,左手是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置。为了找到这张牌的正确位置,要将它与手中已有 …
技术教程
作为一个初学者,排序算法可能是接触到的最早的逻辑实例了,而且这些个逻辑还确实有点伤脑筋,那我就将一些经典的排序算法记下来吧,以后也可以来瞧瞧。一、冒泡排序最直接、最好理解、初学者最容易想到的排序算法!但是好像效率在大量的数据方面有些不足。 冒泡排序算法的运作如下(升序):1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工 …
1、概念计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。它只能对整数进行排序 …
归并排序是一种基于分治思想的排序算法,它的时间复杂度为 O(nlogn)。归并排序的基本思路是:将一个大问题分解成若干个小问题,逐步解决这些小问题,最终合并成一个解决方案。在归并排序中,我们将待排序的数组分成两个子数组,分别对这两个子数组进行排序,然后将它们合并成一个有序的数组。具体实现如下:public class MergeSort {public st …
Java8 Stream排序空字段排在前面或后面直接粗暴sorted会NPE,这种写法可以避免list.stream().sorted(Comparator.comparing(l -> l.getCreateTime(), Comparator.nullsFirst(Date::compareTo))).collect(toList());toOrd …
Comparator.comparing排序使用示例Comparator.comparing排序使用示例背景实体类示例一示例二背景以前常用的排序方式是通过实现Comparator接口来进行排序,写法相对来说比较复杂,使用Comparator.comparing**可以简化代码,看起来逻辑更清晰。实体类import lombok.Data;** * @Auth …
一、插入排序思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置,直到全部插入排序完为止。关键问题:在前面已经排好序的序列中找到合适的插入位置。方法:直接插入排序、二分插入排序、希尔排序二、直接插入排序基本思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后向前找到合适位置后),直到全部插入排序完 …
快速排序是一种非常高效的排序算法,它的实现,增大了记录和比较和移动的距离,从而减少总的比较此时和移动次数。采用分而治之的思想,将一个大的问题拆成一个小的问题,小的问题拆成更小的问题。public static void quickSort(int []array,int low,int high) {if(low>=high){return;}int …
1.冒泡排序(Bubble Sort)import java.util.Arrays;冒泡排序public class BubbleSort_01 {public static void main(String[] args) {int a[]={3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};记录比较次数int coun …
冒泡排序:算法重复走访要排序的数列,一次比较两个元素,如果它们顺序错误就交换它们的位置,这样最大的数就到了最后,重复操作即可得到有序数列。冒泡排序算法运行:1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3. 针对所有的元素重复以上的步骤,除了 …
