算法札记
记录日常编程中使用的实用算法,比如常见的排序算法,冒泡排序、插入排序、选择排序、归并排序等等。
unauthorized401
这个作者很懒,什么都没留下…
展开
-
删除单链表倒数第n个节点
如何删除单链表中的倒数第n个节点?使用快慢指针法,实现一次遍历进行删除。原创 2016-10-12 21:28:10 · 1371 阅读 · 0 评论 -
单链表反转问题
如何将单链表反转?如何 将单链表在指定区间内进行反转?原创 2016-10-08 21:31:25 · 604 阅读 · 0 评论 -
去除已排序链表中的重复元素
题目描述给定一个已排序的单链表,去除单链表中的重复元素,只保留一个重复的元素,并且返回新的单链表。例如: 给出1->1->2,你的函数调用之后必须返回1->2。输入一个已排序的单链表,例如1->1->2。输出返回1->2。原创 2016-09-17 17:50:55 · 2402 阅读 · 1 评论 -
去除已排序数组中的重复元素
题目描述给定一个已排序的数组,去除数组中的重复元素,只保留一个重复的元素,并且返回新的数组长度。要求: 不要给数组分配额外的空间,你必须使用常量的内存大小进行原地操作。例如: 给出数组A=[1,1,2],你的函数调用之后必须返回长度length=2,并且A现在变成[1,2]。输入:一个已排序的数组,例如[1,1,2]。输出:返回数组新的长度,例如length=2。原创 2016-09-16 21:19:34 · 3515 阅读 · 0 评论 -
常用排序算法总结10一一桶排序
桶排序(英文:Bucket Sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是比较排序,他不受到O(n log n)下限的影响。算法步骤桶排序以下列程序进行:原创 2016-09-06 21:49:47 · 1316 阅读 · 0 评论 -
常用排序算法总结9一一计数排序
计数排序(英语:Counting Sort)是一种稳定的线性时间排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。算法步骤找出待排序的数组中最大和最小的元素统计数组中每个值为i的元素出现的次数,存入数组 C 的第 i 项对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加)反向填充目标数原创 2016-09-05 21:39:23 · 809 阅读 · 0 评论 -
常用排序算法总结8一一基数排序
基数排序(英语:Radix Sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。原创 2016-09-04 21:00:38 · 914 阅读 · 0 评论 -
常用排序算法总结7一一堆排序
在了解堆排序之前,我们有必要清楚“什么是堆呢?”。堆(英语:Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问题设计的一种数据结构。原创 2016-09-03 21:27:41 · 759 阅读 · 0 评论 -
常用排序算法总结6一一快速排序
快速排序(英语:Quick Sort),又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序n个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n)算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现原创 2016-09-02 20:49:42 · 1153 阅读 · 0 评论 -
常用排序算法总结5一一希尔排序
希尔排序(英语:Shell sort),也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:1.插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率2.但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位原创 2016-09-01 17:30:41 · 1299 阅读 · 0 评论 -
常用排序算法总结4一一归并排序
归并排序(英语:Merge sort),是创建在归并操作上的一种有效的排序算法,效率为O(n log n)。 归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。原创 2016-08-31 21:34:31 · 628 阅读 · 0 评论 -
常用排序算法总结3一一插入排序
定义 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。原创 2016-08-30 21:42:15 · 914 阅读 · 3 评论 -
常用排序算法总结2一一选择排序
选择排序(英语:Selection sort)是一种简单直观的排序算法。它首先在未排序的序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最原创 2016-08-29 21:18:23 · 827 阅读 · 2 评论 -
常用排序算法总结1一一冒泡排序
稳定的排序 冒泡排序 桶排序 计数排序 归并排序不稳定的排序 选择排序 插入排序 希尔排序 堆排序 快速排序原创 2016-08-28 11:34:43 · 701 阅读 · 0 评论 -
算法入门
最近在研究算法,发现其实算法也并不是特别难,只要抓住算法的核心思想,再静下心来,都可以自己实现的。在计算机领域,有一些常见的而且又经常使用的算法,这些算法我们应该掌握,比如常见的排序算法;还有一些算法就是特定领域中经常使用的算法了,这些算法我们只有必须使用时再去学习使用就行了,比如图像处理中的快速傅里叶变换算法。算法定义让我们来看看算法的定义吧。(以下定义摘自中文维基百科)原创 2016-08-27 21:31:13 · 688 阅读 · 0 评论