算法
五柳-先生
宅边有五柳树,因以为号焉。
展开
-
归并排序及其时间复杂度分析
1》归并排序的步骤如下: Divide: 把长度为n的输入序列分成两个长度为n/2的子序列。 Conquer: 对这两个子序列分别采用归并排序。 Combine: 将两个排序好的子序列合并成一个最终的排序序列。2》时间复杂度: 这是一个递推公式(Recurrence),我们需要消去等号右侧的T(n),把T(n)写转载 2014-03-04 09:55:35 · 1100 阅读 · 0 评论 -
程序员必须知道的10大基础实用算法及其讲解
算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策转载 2016-02-27 14:31:05 · 419 阅读 · 0 评论 -
查找 -数据结构
几种查找算法:顺序查找,折半查找,分块查找,散列表一、顺序查找的基本思想: 从表的一端开始,向另一端逐个按给定值kx 与关键码进行比较,若找到,查找成功,并给出数据元素在表中的位置;若整个表检测完,仍未找到与kx 相同的关键码,则查找失败,给出失败信息。说白了就是,从头到尾,一个一个地比,找着相同的就成功,找不到就失败。很明显的缺点就是查找效率低。【适用性】:适用于线性表的顺序转载 2014-03-21 23:15:14 · 571 阅读 · 0 评论 -
选择排序(Selection Sort)
选择排序(Selection Sort)的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。 常用的选择排序方法有直接选择排序和堆排序。直接选择排序(Straight Selection Sort)1、直接选择排序的基本思想 n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:转载 2014-03-22 00:44:01 · 598 阅读 · 0 评论 -
冒泡排序
交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。 应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。 冒泡排序: 首先我们自己来设计一下“冒泡排序”,这种排序很现实的例子就是: 我抓一把沙仍进水里,那么沙子会立马沉入水底, 沙子上的灰尘会因为惯性暂时沉入水底,但是又会转载 2014-03-21 23:15:51 · 796 阅读 · 0 评论 -
八大排序算法
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键转载 2014-03-21 23:14:52 · 543 阅读 · 0 评论 -
快速排序(QuickSort)
快速排序(QuickSort)划分的关键是要求出基准记录所在的位置pivotpos,编程时候的关键点 快速排序: 既然能把冒泡KO掉,马上就激起我们的兴趣,tnd快排咋这么快,一定要好好研究一下。 首先上图: 从图中我们可以看到: left指针,right指针,base参照数。 其实思想是蛮简单的,就是通过第一遍的遍历(让le转载 2014-03-21 23:15:34 · 677 阅读 · 0 评论 -
算法之堆排序
前序:(二叉)堆数据结构是一种数组对象,它可以被视为一棵完全二叉树。树中每个节点与数组中存放该节点值的那个元素对应。树的每一层都是填满的,最后一层除外。树的根为a[1] (在这里是从1开始的,也可以从0开始),给定了某个节点的下标i,其父节点为i/2,左二子为2*i,右儿子为2*i+1。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个转载 2014-03-13 22:44:47 · 579 阅读 · 0 评论 -
算法之二叉树各种遍历
树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的 i -1次方个结点;深度转载 2014-03-04 10:31:30 · 691 阅读 · 0 评论 -
算法运行时间、logN、NlogN 之间的比较
http://clarkluo2004.blog.163.com/blog/static/32973801200845115213422/这个帖子说的非常好啊 1 大部分程序的大部分指令之执行一次,或者最多几次。如果一个程序的所有指令都具有这样的性质,我们说这个程序的执行时间是常数。 logN 如果一个程序的运行时间是对数级的,则随着N的增大转载 2016-02-27 14:36:29 · 758 阅读 · 0 评论