算法
文章平均质量分 70
树森
不积跬步,无以至千里;不积小流,无以成江海
展开
-
排序算法之3种简单排序 - 选择、冒泡、直接插入
排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现。但是了解这些精妙的思想对我们还是大有裨益的。本文简单温习下最基础的三类算法:选择,冒泡,插入。先定义个交换数组元素的函数,供排序时调用/** * 交换数组元素 * @param arr * @param a * @...原创 2018-05-13 11:58:49 · 282 阅读 · 0 评论 -
排序算法之希尔排序
希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。本文会以图解的方式详细介绍希尔排序的基本思想及其代码实现。基本思想希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,...原创 2018-05-13 14:30:37 · 531 阅读 · 5 评论 -
排序算法之堆排序
1991年的计算机先驱奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德(Robert W.Floyd) 和威廉姆斯(J.Williams) 在1964年共同发明了著名的堆排序算法(Heap Sort).堆的定义如下:nn个元素的序列 {k1,k2,⋅⋅⋅,kn}{k1,k2,···,kn} 当且仅当满足下关系时,称之为堆。 把此序列对应的二维数组看成一个完全二叉树。那么堆的含义就是:...原创 2018-05-13 15:29:03 · 264 阅读 · 0 评论 -
排序算法之快速排序
快速排序(Quicksort)是对冒泡排序的一种改进,借用了分治的思想,由C. A. R. Hoare在1962年提出。1、基本思想快速排序的基本思想:挖坑填数+分治法。首先选一个轴值(pivot,也有叫基准的),通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 2、算法描述快速排...原创 2018-05-13 19:15:02 · 478 阅读 · 1 评论 -
排序算法之归并排序
归并排序是建立在归并操作上的一种有效的排序算法,1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。基本思想归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而...原创 2018-05-13 20:03:44 · 224 阅读 · 0 评论