今天重温了下排序算法,包括冒泡排序法和直接排序法,这些都比较简单,只是快速排序法比较难,于是重点研究了下。 先说一说原理:快速排序法是采用递归的方式对待排序的数列进行若干次的操作,每次操作使得被操作的数列部分以某个元素为分界值分成两部分,一部分小于该分界值,另一部分大于该分界值.该分界值一般被...
分类:
编程语言 时间:
2014-10-13 16:32:29
阅读次数:
278
快速排序算法(quick sort)是对冒泡排序的一种改进,是目前内部排序中速度最快的一种排序方法。基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字比另一部分记录的关键字小,则可对这两部分记录分别继续进行排序,以达到整个序列有序。 整个算法的时间复杂度是:O(nlog2....
分类:
编程语言 时间:
2014-10-12 13:41:38
阅读次数:
118
昨天晚上写好了归并排序的算法,后来就趁热打铁,开始写快速排序算法,代码是越写越熟练,越写越来劲。昨天晚上也就写出来了快速排序算法。但是在我测试的时候先后出现一些问题:第一个问题:1)输入 1 2 3 4 5 6 7 -1时,排序结果2 1 5 6 7 3什么什么的,但是输入8 7 6 5 4 3 2...
分类:
编程语言 时间:
2014-10-11 17:44:15
阅读次数:
134
快速排序采用一种“分而治之、各个击破”的观念。快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。步骤为:1、从数列中挑出一个元素,称为 "基准"(pivot),2、重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基...
分类:
其他好文 时间:
2014-10-10 14:38:04
阅读次数:
206
快速排序是对冒泡排序的一种改进。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,最终达到整个数据变成有序序列。假设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通...
分类:
编程语言 时间:
2014-10-04 23:57:47
阅读次数:
195
终于到了经典的快排了,作为20世纪科学和工程领域十大算法之一,自60年代发明以来,一直吸引着一批批工程师和科学家对其改进,今天我们就分析快排算法以及它的几种改进方案。快速排序概述:快速排序算法也是基于分治思想的方案,与归并排序不同的是,它是原地排序,同时可以将长度为N的数组排序所需的时间和NlogN...
分类:
其他好文 时间:
2014-09-29 13:14:30
阅读次数:
181
1.随机化输入在快速排序算法的使用中,发现其性能是不稳定的,它的速度取决于输入情况,最好的情况下复杂度为O(NlogN),最坏情况下为O(N^2).最简单的优化方法是随机化输入,打乱输入数组顺序,这样可以将不良输入带来低劣性能的可能性降到最低,对于预测算法的运行时间是十分重要的。考虑到,在c++中s...
分类:
其他好文 时间:
2014-09-29 12:18:30
阅读次数:
236
快速排序算法是冒泡排序的一种改进,先找到一个元素,设置2各游标,i从前到后遍历,j从后向前遍历,如果第j个小于此元素,则调换,然后i++,如果遇到第i个大于此元素,则调换。其实这就是一个挖坑-填坑的过程。具体的代码如下:int base_quicksort(int A[], int first, i...
分类:
其他好文 时间:
2014-09-28 19:44:45
阅读次数:
211
概述:编程算法,是完成程序逻辑的主要途径。本文推荐十大编程算法,有利于程序员的编程逻辑。算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlo...
分类:
其他好文 时间:
2014-09-27 12:05:39
阅读次数:
312
快速排序算法与归并排序很像,都是分治的思想。不同点在于归并排序算法是通过位置下区分两个区间,而快速排序算法是用值来区分两个区间。所以归并排序算法还需要合并的操作,而快速排序则不需要。快速排序算法最核心的地方在于:在区间中选择一个值pivot,让大于pivot的都在它的..
分类:
其他好文 时间:
2014-09-21 02:52:20
阅读次数:
254