1 #include 2 #include 3 using namespace std; 4 5 6
int RandomInRange(int start, int end) { 7 srand((unsigned)time(NULL)); 8 int
value = ran...
分类:
编程语言 时间:
2014-06-29 13:00:43
阅读次数:
294
一直以来,对排序都不太感冒,能立马写出来的排序恐怕就只有冒泡排序了,但是我又深知排序算法还是挺重要的然后,就不得不研究一下,那首先拿快速排序来开刀吧我们先不管排序的复杂度什么的,直入主题题目:对数列
4 6 9 3 2 8 5 1 用快速排序首先抽出一个数字(可以是这个数列中的任何一个)抽取第一个吧...
分类:
其他好文 时间:
2014-06-29 07:51:26
阅读次数:
245
常用的排序算法有冒泡排序,插入排序和选择排序。他们的时间复杂度是o(n²),与数据量的平方成正比。他们的效率还是比较低的。现在来说说他们的效率为什么比较低下。以冒泡排序为例,它每一轮都是与相邻的元素进行交换,交换的距离为1,每次每个(没有冒泡出来的)元素都要与前一个比较再交换。每次相邻的比较只能比较出两个元素的大小,不能以整个数组进行参照来确定在整个数组里的大小,也就是说每次的比较不能确定其他元素...
分类:
其他好文 时间:
2014-06-07 16:16:01
阅读次数:
172
算法导论上面快速排序的实现。代码:def partition(array, left, right):
i = left-1 for j in range(left, right): if array[j] <= array[right]: i += ...
分类:
编程语言 时间:
2014-06-06 18:18:13
阅读次数:
351
继上一篇堆排序之后,用相同的数据结构写了个快速排序和插入排序,当数组的长度较小的时候,可使用插入排序,实现如下:QuickSort.h 1 #ifndef
__QUICKSORT 2 #define __QUICKSORT 3 #include "MySqList.h" 4 #include "In...
分类:
其他好文 时间:
2014-06-06 10:50:30
阅读次数:
282
分治算法
一、基本概念
在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)……
任何一个可以用计算机求解的...
分类:
其他好文 时间:
2014-06-04 14:10:55
阅读次数:
344
快速排序法是对冒泡排序的一种改进,本来是要和冒泡排序写在一个文章里的,不过前两天刚开始在递归调用的时候没有完全理解,昨天晚上google了一把发现原来自己理解错了,我看的这个教材没有写清楚,今天早上调试了一把终于成功。
快速排序算法的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其...
分类:
其他好文 时间:
2014-06-02 21:03:57
阅读次数:
273
堆是一个完全二叉树,树中每个结点对应于原始数据的一个记录,并且每个结点应满足以下条件:非叶结点的数据大于或等于其左、右孩子结点的数据(若是按从大到小的顺序排序,则要求非叶结点的数据小于或等于其左、右孩子结点的数据)。由堆的定义可看出,其根结点为最大值,堆排序就是利用这一特点进行的。堆排序过程包括.....
分类:
其他好文 时间:
2014-06-02 21:00:35
阅读次数:
257
9.4选择类排序法选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。我们主要介绍简单选择排序、树型选择排序和堆排序。简单选择排序简单选择排序的基本思想:第i趟简单选择排序是指通过n-i次关键字的比较,从n-i+1个记录中选出关键字最...
分类:
其他好文 时间:
2014-06-02 01:42:56
阅读次数:
256