摘要: 一、算法简介 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。基数排序的发明可以追溯到1887年赫尔曼·何乐礼在打孔卡片制表机(Tabulation Ma 阅读全文
posted @ 2016-07-22 16:29 gugibv 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 一、算法简介 计数排序(Counting sort)是一个非基于比较的稳定的排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。它只能对整数进行排序。该算法于1954年由 Harold H. Seward 提出。它的 阅读全文
posted @ 2016-07-22 16:26 gugibv 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 一、算法简介 希尔排序的实质就是分组插入排序,该方法又称缩小增量排序。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。 二、算法 阅读全文
posted @ 2016-07-22 16:23 gugibv 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 一、算法简介 堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的记录变得简单。 二、算法描述 1、什么是堆? 我们这里提到的堆一般都指的是二叉堆,它满足二个特性: 1 父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。 2 阅读全文
posted @ 2016-07-22 16:18 gugibv 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 一、算法简介 快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 二、算法描述 阅读全文
posted @ 2016-07-22 16:08 gugibv 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 一、算法分析 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归 阅读全文
posted @ 2016-07-22 16:00 gugibv 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 一、算法分析 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 二、算法描述 一般来说,插入排序 阅读全文
posted @ 2016-07-22 15:52 gugibv 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 一、算法简介 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。 二、算法描述 n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: 1、初始状态:无序区为R[1..n],有序区为空。 2、第i趟 阅读全文
posted @ 2016-07-22 15:33 gugibv 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 一、算法简介 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 二、算法描述 1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2、对每一对相邻元素作同样的工作,从开始第一对到结尾的 阅读全文
posted @ 2016-07-22 15:21 gugibv 阅读(264) 评论(0) 推荐(0) 编辑