![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构之路
文章平均质量分 58
SuPerPeng1988
这个作者很懒,什么都没留下…
展开
-
排序算法篇(选择排序)
1. 选择排序 选择排序的基本思想是遍历数组的过程中,以 i 代表当前需要排序的序号,则需要在剩余的 [i…n-1] 中找出其中的最小值,然后将找到的最小值与 i 指向的值进行交换。因为每一趟确定元素的过程中都会有一个选择最大值的子流程,所以人们形象地称之为选择排序。 举个实例来看看: 初始: [38, 17, 16, 16, 7, 31, 39, 32, 2, 11] i...原创 2014-11-29 21:21:49 · 123 阅读 · 0 评论 -
排序算法篇(插入排序)
会打扑克的人对于插入算法就很好了解啦,每次扎入一张牌我是会对它排序的。 插入排序包括:直接插入排序,二分插入排序(又称折半插入排序),链表插入排序,希尔排序(又称缩小增量排序)。属于稳定排序的一种(通俗地讲,就是两个相等的数不会交换位置)。 一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下: ⒈ 从第一个元素开始,该元素可以认为已经被排序 ⒉ 取出下一个元素,在已经排...原创 2014-11-30 20:03:04 · 98 阅读 · 0 评论 -
排序算法篇(冒泡排序)
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 ...原创 2014-12-01 21:47:51 · 117 阅读 · 0 评论 -
排序算法篇(堆排序)
堆是一种特殊的数据结构,是一种完全二叉树,分为大根堆(根节点的值大于孩子节点)和小根堆(根节点小于孩子节点),建堆和堆排序代码如下: package cn.com.daydayup.test; public class StackSort { public static void main(String[] args) { int[] a = { 26...原创 2014-12-02 15:11:22 · 110 阅读 · 0 评论 -
排序算法篇(快速排序)
1、算法概念。 快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。 2、算法思想。 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 3、实现思路。 ①以第一个关键字...原创 2014-12-03 12:25:54 · 128 阅读 · 0 评论 -
排序算法篇(希尔排序)
基本思想 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2 tmp){ * array[in] = array[in - 1]; * in--; * } ...原创 2014-12-04 10:02:00 · 149 阅读 · 0 评论 -
排序算法篇(基数排序)
基本解法 第一步 以LSD为例,假设原来有一串数值如下所示: 73, 22, 93, 43, 55, 14, 28, 65, 39, 81 首先根据个位数的数值,在走访数值时将它们分配至编号0到9的桶子中: 0 1 81 2 22 3 73 93 43 4 14 5 55 65 6 7 8 28 9 39 第二步 接下来将这些桶子中的数值重新串接起来,成为以下的数列...原创 2014-12-05 09:48:44 · 382 阅读 · 0 评论 -
排序算法篇(归并排序)
归并排序 归并排序是另一类不同的排序方法,所谓归并,就是把两个或者两个以上的有序表合并成一个新的有序表的过程。 归并排序的基本思想: 将一个含有n个序列的有序表看成是n个长度为1的有序表,然后两两归并,得到[n/2]个长度为2的有序表,然后再两两归并,直到得到一个长度为n的有序表为止。 下面是归并排序的一个简单的例子: 初始值 【49】 【38】 【65】 ...原创 2014-12-06 19:37:02 · 105 阅读 · 0 评论