这段时间对STL比较痴迷,遂做了些许研究,今天把原来写过的快速排序算法用模板函数重新写了一下,把代码贴出来分享一下
有两个版本,版本二可以传入比较器,自己定义排序规则
快速排序算法思路:
1)从序列中选出一个元素作为基准;
2)重排序列,所有比基准小的元素位于基准左侧,比基准大的元素位于基准右侧,和基准相等的元素位于任意一侧,此过程称为分组;
3)以递归的方式对小于基...
分类:
其他好文 时间:
2014-09-18 23:51:04
阅读次数:
258
算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实...
分类:
其他好文 时间:
2014-09-18 11:04:53
阅读次数:
225
K&R第五章介绍了用函数指针实现的快速排序算法,对其中的代码比较困惑,所以看了下《算法导论》上对快排的介绍,下面这张图说明了快排的原理及过程:
用C实现上面的过程:
#include
/* declare function pointer */
typedef int(*fp_operation)(int a, int b);
void swap(int *a, int...
分类:
其他好文 时间:
2014-09-17 21:58:12
阅读次数:
320
简单易于理解的快速排序,非专业术语易于学会运用.各大公司面试必备,希望能够帮到开发者...
分类:
移动开发 时间:
2014-09-16 10:49:30
阅读次数:
200
上一篇介绍了排序的本质,还有实现了《算法导论》里的快速排序算法。但是快速排序的算法不是只有一个,我们要一次过把快速排序的好东西都挖掘出来。所以这篇文章,让我们对快速排序溯源,去了解快速排序算法的发明者。中原娱乐城霍尔(Hoare)霍尔 (Sir Charles Antony Richard Hoar...
分类:
其他好文 时间:
2014-09-13 18:31:45
阅读次数:
256
快速排序算法是一种划分交换的方法,采用了分治法进行排序。1 public static void quikSort(int a[],int left,int right)2 {3 if(left >= right)return;4 int p = part...
分类:
其他好文 时间:
2014-09-10 22:16:11
阅读次数:
138
1. 快排 详见之前博文快速排序算法。 2. 堆排序 详见之前博文非递归方法的堆排序实现。 3. 简单排序(冒泡排序、选择排序和插入排序) 代码如下: #include #include #include #define N 20static void show(int *arr, int len)...
分类:
其他好文 时间:
2014-09-05 14:08:51
阅读次数:
198
引言 快排采用分治法(Divide and Conquer)把一个list分为两个sub-lists。 算法步骤 1. 从数列中跳出一个元素,作为基准(pivot)。 2. 重新排序数列,所有比基准值小的元素(elements pivot)放在基准值后面,与基准值相等的数可以放在任意一边。此操作即为...
分类:
其他好文 时间:
2014-09-02 22:36:25
阅读次数:
298
本文为大家梳理阐述了十种高效率的变成算法,熟练掌握的程序员可以借这些方法逐渐发展为高手,那么我们一起来探究一下是哪十种算法有这么神奇的效果。算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比 较,但这种...
分类:
其他好文 时间:
2014-09-02 11:49:14
阅读次数:
295
算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序?n?个项目要Ο(n?log?n)次比较。在最坏状况下则需要Ο(n2)次比 较,但这种状况并不常见。事实上,快速排序通常明显比其...
分类:
其他好文 时间:
2014-09-02 10:42:44
阅读次数:
278