排序算法
我叫程序猿
致力于让解题速度超过LeetCode更新速度
展开
-
插入排序--图文演示,基于Java代码实现,附每一步的详细注释
1.什么是插入排序。 理解一:给定一组元素,长度大小为n,从索引为1的位置开始,每次从已经排序好的序列往前查找,找到第一个比当前元素小的元素,将当前元素插入其后。若被查找元素比当前的元素大,则被查找的元素后移。 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 理解二:从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。) 说的再多,不如撸代码 public clas.原创 2021-04-01 19:50:13 · 145 阅读 · 0 评论 -
冒泡排序--图文演示,基于Java代码实现,附每一步详细注释
给定一个array数组,利用冒泡排序算法进行排序; public class Solution { public int InversePairs(int [] array) { if(array.length==0||array.length==1)return 0; int sum=0; int n=array.length; boolean flag=true; while(flag){ f原创 2021-03-22 16:22:52 · 249 阅读 · 0 评论 -
归并排序--图文演示,Java代码实现,附每一步详细注释
1.算法原理 归并排序是创建在归并操作上的一种有效排序算法(稳定),速度仅次于快速排序。 2.基本思想 归并排序其实就是分治思想,分治模式在每一层递归上有2个步骤 分 :将n个元素分为含n/2个元素的2个子序列 治 : 用合并排序法分别对两个子序列进行递归的排序,然后合并已经排序好的子序列。 可以理解为从上到下,再从下到上,分–排--合。 算法步骤(如何合并2个子序列): 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列; 设定两个指针,最初位置分别为两个已经排序序原创 2021-03-10 16:43:00 · 245 阅读 · 5 评论 -
堆排序的详细知识点
1。首先明白一个概念,大根堆,小根堆是一种数据结构,堆排序是在大根堆或者小根堆这种数据结构上进行排序的一种排序算法。一个是数据结构,一个是算法。 2.最大堆常用来构建升序,最小堆常用来构建降序。 性质一: 索引为i的左孩子的索引是 (2*i+1); 性质二: 索引为i的左孩子的索引是 (2*i+2); 性质三:索引为i的父结点的索引是 floor((i-1)/2); 注:第一个元素的索引位0 3.堆排序的时间复杂度是O(N*logN),属于不稳定排序算法 4.大根堆的java排序代码如下 publ原创 2021-03-09 16:23:37 · 218 阅读 · 0 评论 -
【图文详解】手把手教你快速排序,基于Java代码实现,附每一步的详细注释
1什么是快速排序? 首先选择一个基准值,通常是第一个数,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比基准值大,另外一部分的所有数据都比基准值要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 从上述文字中,有一定基础的同学可以看出有一定的分治思想,其实快排就是分治加挖坑,为何 public class QuickSort { } ...原创 2021-04-01 12:33:36 · 175 阅读 · 0 评论