算法
文章平均质量分 53
恶魔青叶
这个作者很懒,什么都没留下…
展开
-
十大排序之堆排序
十大排序之堆排序(HeapSort)1.简介堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆排序的时间复杂度是:O(nlogn) 空间复杂度:O(1).说到堆排序就不得不提到完全二叉树了。什么是完全二叉树呢?完全二叉树定义:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。一颗普通的完全二叉树:我们把堆又分为大根堆和小根堆,大根堆:根结点的键值是所有堆结点键原创 2021-04-13 22:38:28 · 143 阅读 · 0 评论 -
十大排序之冒泡排序
冒泡排序1.简介冒泡排序是一种很经典的算法,它的思路也很简单:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。冒泡排序的时间复杂度是:O(n²) , 空间复杂度是:O(1)2.图解流程假设我们待排序数组是: 5 4 7 1 2 3 首先开始进行第一轮排序,第一个原创 2021-04-13 21:00:20 · 113 阅读 · 0 评论 -
十大排序之插入排序
java实现插入排序(InsertSort)十大排序之快速排序十大排序之归并排序扫码关注公众号,更多资料尽在掌握。1.简介插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序的时间复杂度是O(n^2) ,空间复杂度 是O(1)。实现思路:第一步、将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。第二步、从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当原创 2021-03-28 14:47:07 · 282 阅读 · 4 评论 -
十大排序之归并排序
java实现归并排序(Mergesort)1.简介归并排序(MERGESORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序的时间复杂度是: 空间复杂度是:归并排序的思路流程是:第一步、将待排序数列中的数字分为若干组,每个数字分成一组,即如果数列中8个数字,就分成8组。第二步、将这些组原创 2021-03-27 23:15:12 · 246 阅读 · 0 评论 -
十大排序之快速排序
java实现快速排序(Quicksort)1.简介快速排序,快速排序(Quicksort)是对冒泡排序的一种改进。它采用了分治法的策略,数据量越大,越能体现快排的速度。快速排序的平均时间复杂度是O(nlogn), 空间复杂度是O(n),是不稳定排序。快速排序实现的思想是:指通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。整个排序过程可以递归进行,以此达到整个数据变成有序序列。总结:第一步、在数列中取出原创 2021-03-27 17:43:50 · 316 阅读 · 0 评论 -
青蛙跳台阶问题
青蛙跳台阶问题1.简介青蛙跳台阶是在递归方法中经典的问题,我们来看一下问题问题一:一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。问题二:一只青蛙一次可以跳上1级台阶,也可以跳上2 级……它也可以跳上n 级,此时该青蛙跳上一个n级的台阶总共有多少种跳法?先看问题一:一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。我们先用列举法推出:跳一个一级台阶有一种跳法,跳一个二级台阶有两种跳法,跳一个原创 2021-03-21 22:24:52 · 160 阅读 · 0 评论