巧妙利用快速排序法的原理求一个数组中的第10大元素...
分类:
其他好文 时间:
2014-06-16 12:52:21
阅读次数:
136
快速排序:
该方法的基本思想是:
1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。
快速排序进一步挖掘就是挖坑和分治,这种方法比较实用简单:
对挖坑填数进行总结
1.i =L; j = R; 将基准数挖出形成第一个坑a[i]。
2.j--由后向前找比它小的数,找到...
分类:
编程语言 时间:
2014-06-15 18:54:10
阅读次数:
324
这道题网上很多人都会说容易,水题之类的话,不过我看了下说这样的话的人的程序,可以说他们的程序都不及格!
为什么呢?因为他们的程序都是使用简单的二次排序水过(大概你能搜索到的多是这样的程序),那样自然可以说不及格了。
因为本题真正的目的是求前k个最大数的问题,这就需要活用快速排序。
求前k个最大数的思路:
1 选取一个数位轴,然后把大于这个数的数放到数列前面,小于这个数的数放到数列后面
2 如果前面的数的数量大于k,那么可以去掉后面的数,递归在前面的数查找前k个最大数
3 如果前面的数的数量小于k,那么截去前...
分类:
其他好文 时间:
2014-06-15 18:04:07
阅读次数:
181
又是一题快速排序的题目,活用快排求某个位置的数。
这次完善一下自己的基础,把快排代码规范化和增加一个random算法,进一步确保不会出现最坏情况。
思路和前一道题差不多,不过是求第k个数了,这里的第k个数是中序数。
花了点时候整理下代码,果然变得十分工整了。
#include
#include
#include
#include
using namespace std;
const...
分类:
其他好文 时间:
2014-06-15 16:21:17
阅读次数:
214
概述:排序算法可分为比较性的排序,以及运算性的排序;这里详细介绍这些排序的原理,性能,实现,以及应用场合。比较排序一:快速排序1:原理采用了分治思想,在序列A[p...r]中选取一个元素,当然这里是用了p或者r处的元素(规格一致);找到该元素的,满足前面的值都比它小,后面的都比它大;同理让子序列递归...
分类:
其他好文 时间:
2014-06-15 00:41:48
阅读次数:
297
Partition ListGiven a linked list and a valuex,
partition it such that all nodes less thanxcome before nodes greater than or
equal tox.You should pres...
分类:
其他好文 时间:
2014-06-12 06:18:55
阅读次数:
562
对c语言系统库函数、堆排序、希尔排序、折半插入排序、快速排序消耗时间的比较...
分类:
编程语言 时间:
2014-06-10 15:02:33
阅读次数:
305