算法学习
文章平均质量分 57
huang_xiao_yu
这个作者很懒,什么都没留下…
展开
-
算法学习之三:快速排序
快速排序的原理:在数组中选择一个称为主元(pivot)的元素将数组分为2部分,使得第一部分中的所有元素都小于或等于主元,第二部分中的所有元素都大于主元。对第一部分递归的应用快速排序算法,第二部分递归的应用快速排序算法。图解快速排序过程:代码解释快速排序:public class QuickSort1 { public static void quickSort(int[] list,int l原创 2017-05-02 13:21:09 · 282 阅读 · 0 评论 -
算法学习之四:桶排序
桶排序概念:桶排序是在已知数据的范围的条件下,创建若干个桶,根据相应的比较规则将待排数据落入各个对应的桶中,最后扫描桶来实现排序。 这个概念是从http://www.cnblogs.com/hapjin/p/5534262.html摘取的。 桶排序更接近于一种标记,当某个数出现了,就在对应的桶中mark一下。 举例子: 比如一个数组:3 ,5 , 3 , 1 , 2 我们就要准备原创 2017-05-02 16:13:42 · 1082 阅读 · 0 评论 -
算法学习之五:队列
队列的概念:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 要着重强调的地方: (1)所有删除的操作,都在队头 (2)所有插入的操作,都在队尾 (3)队列遵循先进先出代码说明队列的运用:正好我今天看到一个华为2016校招(删数)的笔试题目原创 2017-05-03 15:02:19 · 302 阅读 · 0 评论 -
算法学习之六:栈
栈的概念:栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。关键点:只能在一端进行插入和删除的操作。代码说明:用最常见的一个例子:用栈来判断某个字符串是否是回文字符串。大致说下回文字符串:就是正过来,反过来都是一样的,比如:abba, abcba原创 2017-05-03 17:38:03 · 372 阅读 · 3 评论 -
算法学习之一:堆排序
一.堆的属性:1. 它是一颗完全的二叉树2. 每个结点大于或等于她的任意一个孩子。二.对堆排序:堆排序:使用的是二叉堆,它是一颗完全的二叉树。 如何将一个ArrayList中存储的数据用堆标示? 排列顺序如下:树根在位置0处(0是索引),它的2个孩子就要索引1和2处,类推==》对于位置在i处的结点,它的左孩子在2i+1处,右孩子在2i+2处,父亲在(i-1)/2处。 好了原创 2017-04-25 19:09:13 · 326 阅读 · 0 评论 -
算法学习之二:归并排序
归并排序的概念将数组分为两半,将每部分递归的应用归并排序,直至不能分解为止。在两部分都排好序后,对它们进行归并。用图说明:这里涉及到递归,有点不好理解:当将一个length为8的数组拆分为两半:左数组和右数组。只要左边数组长度不为1,就还要拆分,那就递归调用,直到长度为1,同理,右边数组也是如此的拆分。等拆分好的数组长度都是为1的时候,就开始两两数组排序合并。算法的具体实现:原创 2017-04-26 16:35:35 · 271 阅读 · 0 评论 -
算法学习之七:链表
链表的概念:链表由一系列结点组成,每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。链表有单链表和双端链表代码实现单链表://先设计一个单链表的数据结构public class SingleLink { public int data; public SingleLink next; public Singl...原创 2018-04-02 09:48:20 · 156 阅读 · 0 评论