排序算法
文章平均质量分 79
my_learning_road
这个作者很懒,什么都没留下…
展开
-
堆排序及其Java实现
1.堆的定义:一个完全二叉树中,任意父结点总是大于或等于(小于或等于)任何一个子节点,则为大根堆(小根堆)。2.堆的存储:完全二叉树适合采用顺序存储的方式,因此一个数组可以看成一个完全二叉树。用数组来表示堆,下标为 i 的结点的父结点下标为(i-1)/2;其左右子结点分别为 (2i + 1)、(2i + 2)。编号特点:从一个结点的编号就可推得其双亲,左、右孩子,兄弟等结点的编号。假设编号为i的结...原创 2018-03-16 13:53:06 · 288 阅读 · 0 评论 -
归并排序及Java实现
1、基本思想: 归并排序就是利用归并的思想实现的排序方法。而且充分利用了完全二叉树的深度是log2n+1描述的特性,因此效率比较高。其基本原理如下:对于给定的一组记录,利用递归与分治技术将数据序列划分成为越来越小的半子表,在对半子表排序,最后再用递归方法将排好序的半子表合并成为越来越大的有序序列。 2、复杂度分析一趟归并需要将数组 a[]中相邻的长度为h的有序序列进行两两归并.并将结...原创 2018-03-18 13:19:15 · 272 阅读 · 0 评论 -
直接插入排序及Java实现
1.排序思路: 假设待排序的元素存放在数组R[0..n-1]中,排序过程中的某一时刻,R被分成两个子区间R[0..i-1]和R[i..n-1](刚开始时,i=1,有序区只有R[0]一个元素),其中,前一个子区间是有序区,后一个子区间是无序区。直接插入排序的一趟操作是将当前无序区的第一个元素插入到有序R[0..i-1]区中合适的位置上,是的R[0..i]变为新的有序区。2.Java实现publ...原创 2018-03-20 19:23:22 · 240 阅读 · 0 评论 -
冒泡排序及实现
1.排序思路 冒泡排序也称起泡排序,是一种典型的交换排序的方法,其基本思想是:通过无序区中的相邻元素关键字的比较和位置的交换,使得关键字最小的元素如气泡一般逐渐“上浮”直至“水面”。整个算法是从最下面的元素开始,对每两个相邻的关键字进行比较,并且让关键字较小的元素换至关键字较大的元素之上,使得经过一趟冒泡排序之后,关键字最小的元素到达最上端。接着,再在剩下的元素中找关键字次小的元素,...原创 2018-03-20 19:41:24 · 255 阅读 · 0 评论 -
快速排序及Java实现
1.排序思路 快速排序是由冒泡排序改进而得,它的基本思想是:在待排序的n个元素中,任取一个元素(通常第一个)作为基准,把该元素放入适当位置后,数据序列被此元素划分为两个部分,把关键字小于该元素的元素放在前一部分,把关键字大于该元素的元素放在后一部分,并把该元素排在这两部分中间(称为该元素归位),这个过程叫做一趟快速排序。之后对两个子部分用递归的方法继续划分。 具体做法(以第一个元素为基准为例)...原创 2018-03-20 21:02:53 · 199 阅读 · 0 评论 -
所有排序算法的比较总结(非常全)
原创 2018-04-12 11:37:35 · 1723 阅读 · 1 评论