算法和数据结构
算法和数据结构
BraveSoul360
海到尽头天作岸,山登绝顶我为峰
展开
-
排序算法7:堆排序(HeapSort)
排序算法7:堆排序(HeapSort)文章目录排序算法7:堆排序(HeapSort)前言1. 算法步骤2. 动图演示2、实现Java 代码实现JavaScript 代码实现Python 代码实现PHP 代码实现前言大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列;小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列;堆排序的平均时间复杂度为 Ο...转载 2019-06-05 20:46:35 · 587 阅读 · 0 评论 -
排序算法6:快速排序(QuickSort)
排序算法:快速排序快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一个串...转载 2019-06-04 20:38:33 · 352 阅读 · 0 评论 -
排序算法5:归并排序(Merge sort)
归并排序(Merge sort)归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法:自上而下的递归(所有递归的方法都可以用迭代重写,所以就有了第 2 种方法);自下而上的迭代;在《数据结构与算法 JavaScript 描述》中...转载 2019-06-04 20:20:41 · 454 阅读 · 0 评论 -
算法排序-4、希尔排序(Shell Sort)
希尔排序(Shell Sort)1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。算法描述先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述:选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;按增量序列个数k,对序列进行k 趟排...原创 2019-03-29 01:08:01 · 256 阅读 · 0 评论 -
排序算法-3、插入排序(Selection Sort)
排序算法-3、插入排序(Selection Sort)插入排序(Insertion Sort)插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法描述一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序...原创 2019-03-29 00:53:36 · 306 阅读 · 0 评论 -
排序算法-2、选择排序(Selection Sort)
排序算法-2、选择排序(Selection Sort)选择排序选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。算法描述n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算...原创 2019-03-29 00:12:28 · 495 阅读 · 0 评论 -
排序算法-1、冒泡排序(java实现)
排序算法-冒泡排序冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。算法描述比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一...原创 2019-03-29 00:06:07 · 238 阅读 · 0 评论 -
30张图带你彻底理解红黑树
转自:安卓大叔www.jianshu.com/u/1d933ff900e730张图带你彻底理解红黑树当在10亿数据中只需要进行10几次比较就能查找到目标时 —— 学红黑树有感。本文将通过图文的方式讲解红黑树的知识点,并且不会涉及到任何代码,相信我,在懂得红黑树实现原理前,看代码会一头雾水的,当原理懂了,代码也就按部就班写而已,没任何难度。阅读本文你需具备知识点:二叉查找树完美平衡二...转载 2019-03-28 23:56:00 · 581 阅读 · 0 评论