
数据结构与算法
潇雷
这个作者很懒,什么都没留下…
展开
-
数据结构----排序算法(1):冒泡排序
概述冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。1.1算法描述比较相邻的元素。如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一...原创 2019-05-31 19:52:24 · 344 阅读 · 0 评论 -
数据结构-----排序算法(2):选择排序
概述表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推...原创 2019-05-31 20:46:11 · 182 阅读 · 0 评论 -
数据结构----排序算法(3):插入排序
概述插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。3.1算法描述一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素...原创 2019-06-01 09:29:01 · 360 阅读 · 0 评论 -
数据结构----排序算法(4):希尔排序
概述希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。希尔排序是把元素按下表的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,...原创 2019-06-01 15:49:01 · 276 阅读 · 0 评论 -
数据结构----排序算法(5):归并排序
概述和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间。归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"...原创 2019-06-01 15:57:31 · 267 阅读 · 0 评论 -
数据结构----排序算法(6):快速排序详解及代码实现
6.0 概述快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。分治法:快速排序也属于交换排序,每一轮挑选一个基准元素,并让其他比它大的元素移动到数列的一边,比它小的元素移动到数列的另一边,从而把数列拆成了两个部分。6.1算法描述快速排序使用分治法来把一个串(lis...原创 2019-06-01 17:27:50 · 741 阅读 · 0 评论