自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 堆排序

堆排序:时间复杂度O(N*logN) 额外空间复杂度O(N) 先将一个无序数组整理成大根堆的排列形式,也就是一个完全二叉树的形式,但是这个完全二叉树的每个父节点都大于等于它的子节点,所以每个值都要和自己的父节点进行比较,一直到这个值去到合适的位置。而根节点就是最大的数,这样的堆结构,就是大根堆结构。大根堆的构建时间复杂度O(N) (图是借用的) 然后将根节点与最后面的节点互换

2018-01-20 17:49:56 139

原创 归并排序

归并排序:时间复杂度O(N*logN); 额外空间复杂度O(logN)   将一个无序数组,人为从中间划分为两份arr1和arr2,是归的过程。如果这两个数组分别有序的话,借助一个help数组,将arr1和arr2按照顺序放进help中,然后将help数组中的数据复制给原数组,使其有序,是并的过程(有一种不用借助外面的数组,自身使两部分arr1和arr2有序的方法,但是会令时间复杂度变成O(N^

2018-01-20 15:34:19 105

原创 快排

快速排序:时间复杂度O(N*logN) 额外空间复杂度O(logN)在一个无序数组arr中,先选择数组的最后一个值作为划分值end,将数组arr中小于划分值的放在左边,等于划分值的放中间,大于划分值的放右边。 可以通过时间复杂度O(N),额外空间复杂度O(1)完成上方的分组问题。首先假设两个虚拟组,左边是less组,有变量less指向less组的最右边位置,右边放more组,有变量more指向

2017-12-17 22:55:13 168

原创 选择排序和插入排序

选择排序:时间复杂度:O(N^2) 额外空间复杂度O(1) 选择排序是从数组的第一个值即arr[0]开始,先假定当前值为最小值,记下index值,向后遍历数组,当 arr[i]小于arr[index]时,令index=i;一直到arr[length-1],获得最小值的index然后与arr[0]交换,此时一次遍历的时间复杂度为O(N)。下一个循环从arr[i]开始,重复上述过程一直到i==a

2017-12-16 21:28:03 214

原创 各类排序算法的理解

(1)冒泡排序:时间复杂度O(N^2)  ; 额外空间复杂度:O(1);      目的:令一个无序数组按照从小到大的规则排列;       从第一个位置的值即arr【0】开始,每一个数都和它的下一个位置的值进行比较即arr【i】与arr【i+1】比较,如果当前值大于它的下一个位置的值两个位置的值将进行交换。一直到当前值为arr【length-2】与arr【length-1】比较,得到最大值放在最

2017-12-15 22:09:21 250

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除