算法
文章平均质量分 73
myw_katrina
这个作者很懒,什么都没留下…
展开
-
基础排序算法
基础排序算法指的是算法时间复杂度为O(n^2 )的排序算法,比如,冒泡排序,选择排序,插入排序。这里主要介绍选择排序和插入排序的算法思想以及优化方法,并给出相应的java代码。这里介绍的排序算法默认都是按照从小到大的顺序进行排序。 选择排序 这里先给出一个例子 5 7 4 6 8 1 0 9 2 从数组里选出最小的元素放在数组首部,这里最小元素为0,所以将0与5交换,从剩下的元素中选择最小...原创 2018-09-08 18:21:06 · 127 阅读 · 0 评论 -
最大堆(heap)
堆 堆是是一种特殊的数据结构,堆通常是一个可以被看做一棵树的数组对象。满足以下条件 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树 根节点最大的堆叫做最大堆,本文主要介绍最大堆。 用数组存储堆如下图所示,假设堆有n个元素,从1开始从上到下,从左到右标记堆的元素。可以发现:假设一个节点索引为i,那它的父节点处的索引为i/2,左子节点的索引为2*i...原创 2018-09-12 22:29:18 · 382 阅读 · 0 评论 -
归并排序
之前讲了一些基础的排序算法,以及堆排序,现在给大家讲讲高级排序算法——归并排序,归并排序有自顶向下的归并排序以及自底向上的归并排序。排序按照从小到大的顺序。 自顶向下的归并排序 算法思想:将整个数组按照一半划分,再对子数组对半分,直到子数组的元素个数为1。然后再对数组进行归并,归并的过程对数组进行排序。排序需要使用额外的空间进行。算法思想使用了递归的思想,“递”的过程是对数组对半划分,“归”...原创 2018-09-24 19:19:23 · 174 阅读 · 0 评论 -
快速排序
快速排序是个公认的优秀的排序算法,本文将详细介绍快速排序的算法思想以及各种优化方法。 快速排序 算法思想:每次从当前数组中选择一个元素,以这个元素为基点(标记为p),将当前数组分为两部分,一部分是小于p的元素,另一部分则是大于p的元素,然后再对小于p的元素的子数组和大于p的元素的子数组进行同样的操作,直到每个元素在它该在的位置,则全部有序。 在这个过程中,最重要的就是将数组以一个基准点分割为...原创 2018-09-25 15:08:45 · 134 阅读 · 0 评论