上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 51 下一页
2014年6月17日
摘要: 2014.06.17 06:42简介: 基数排序是一种非比较算法,通过多轮的分配与合并来排序整个数组。应用范围比较窄,根据Wikipedia的说法,它只适合整数排序。描述: 基数排序和桶排序有点类似,都是将元素按照特定依据分配到多个桶中。但它和桶排序的区别,在于它要进行不止一次的分配与合并。每次... 阅读全文
posted @ 2014-06-17 06:54 zhuli19901106 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 2014.06.17 06:22简介: 桶排序是一种非比较排序,某些情况下其最好的复杂度可以达到O(n)。虽然并不常作为排序算法使用,但桶的思想却是哈希表的关键之一。描述: 如果我们有k个桶,编号0~k - 1。那么我们用某种依据把数组里的n个元素分配到这k个桶中去。然后把每个桶单独排序。这k个... 阅读全文
posted @ 2014-06-17 06:31 zhuli19901106 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 2014.06.17 05:15简介: 快速排序是实际应用最广的基于内存的不稳定的比较排序。拥有O(n * log(n))的平均复杂度和O(n^2)的最坏复杂度。采用的思路是分治法,递归实现。描述: 快速排序的基本思路,是从数组中选取一个值pivot作为参照,使得比pivot小的都在它左边,比p... 阅读全文
posted @ 2014-06-17 06:18 zhuli19901106 阅读(641) 评论(2) 推荐(0) 编辑
摘要: 2014.06.17 04:34简介: 归并排序是分治法的一个好例子,属于基于比较的内部/外部排序算法。普通的归并算法具有O(n * log(n))的时间和O(n)的空间复杂度。就地归并算法能帮助降低额外空间开销,使得归并排序更高效。描述: 分治法的思路就是先把大问题化为多个小问题,都解决了以后... 阅读全文
posted @ 2014-06-17 04:46 zhuli19901106 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 2014.06.17 03:29简介: 堆排序,是从这本教材上看,最好的排序算法。它是稳定排序,时间复杂度稳定保持在O(n * log(n)),空间复杂度为O(1)。原理非常简单,实现也比较简单。但是,应用却不如快速排序和归并排序那么广。原因咱们下面说说。描述: 如果你要把数组排成升序,你可以依... 阅读全文
posted @ 2014-06-17 04:08 zhuli19901106 阅读(430) 评论(0) 推荐(0) 编辑
摘要: 2014.06.17 02:43简介: 希尔排序是插入排序的改进版。交换排序的目的,是通过交换,将逆序数降低为0。每交换一对相邻元素,逆序数变化为1。如果交换的元素不相邻,则逆序数的变化可能就大于1。希尔排序的思路,就是通过交换离得更远的两个元素,让逆序数更快地变为0(当然,并不总是管用)。描述:... 阅读全文
posted @ 2014-06-17 02:57 zhuli19901106 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 2014.06.17 01:37简介: 插入排序是最常用的O(n^2)级别的交换排序算法。之所以最常用,是因为它和选择排序、冒泡排序相比,有着自己的优势。描述: 如果数组的前i - 1个元素已经排好序,你要将第i个元素插入到其中,使得前i个元素变得有序。为了找到应该插入的位置,我们从后向前扫描,... 阅读全文
posted @ 2014-06-17 02:25 zhuli19901106 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 2014.06.17 01:17简介: 选择排序是一种O(n^2)级别的交换排序算法,属于新手必学算法。描述: 个人觉得选择排序的代码是所有排序中最直观,最符合人类大脑思维的了。当我第一次有排序的需求时(初中时自学了一点C语言,算是人生第一次写代码),我自己试着写下的代码就是选择排序,当然我上了... 阅读全文
posted @ 2014-06-17 01:33 zhuli19901106 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 2014.06.17 01:04简介: 冒泡排序是O(n^2)级别的交换排序算法,原理简单,属于必知必会的基础算法之一。思路: 排序要进行N轮,每一轮从尾部逐个向前扫描,遇到逆序对就进行交换。确保每一轮把最小的元素交换到前面去。这个过程好比水中的气泡向上飘,所以叫冒泡排序。代码非常简单,所以语言... 阅读全文
posted @ 2014-06-17 01:13 zhuli19901106 阅读(480) 评论(0) 推荐(0) 编辑
2014年6月15日
摘要: 2014.06.15 22:14简介: 堆是一种非常实用的数据结构,其中以二叉堆最为常用。二叉堆可以看作一棵完全二叉树,每个节点的键值都大于(小于)其子节点,但左右孩子之间不需要有序。我们关心的通常只有堆顶的元素,而整个堆则被封装起来,保存在一个数组中。图示: 下图是一个最大堆: 实现: 优... 阅读全文
posted @ 2014-06-15 23:05 zhuli19901106 阅读(545) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 51 下一页