快速排序是一种分治的排序。快速排序与归并排序是互补的:
归并排序将数组分成两个子数组分别排序,并将有序的子数组归并以将整个数组排序;而快速排序将数组首先切分成两个子串,然后分别排序。相关的代码:public
static void QuickSort(char[] a, int lo, int hi...
分类:
其他好文 时间:
2014-05-07 14:14:01
阅读次数:
264
void quickSort2(int a[], int l, int r) {
if (l < r) {
int i = l, j = r;
int x = a[l];
while (i < j) {
while (i = x) {
j--;
}
if (i < j) {
a[i++] = a[j];
}
whi...
分类:
其他好文 时间:
2014-05-07 12:03:15
阅读次数:
269
以数列 14,11,25,37,9,28
为例,详细描述执行一趟快速排序的算法:1,选择待排序数列的枢轴,一般以数列的首元素作为枢轴.此数列中,我们选择首元素14作为枢轴,nPivot =
14.2,设定两个指针 i 和 j ,分别指向数列的首元素和尾元素. i 指向首元素14, j 指向尾元素2....
分类:
其他好文 时间:
2014-05-07 09:56:54
阅读次数:
249
Golang开发环境搭建 Notepad++、LiteIDE两种方式
martini框架的使用...
分类:
其他好文 时间:
2014-05-07 03:02:54
阅读次数:
289
前一篇文章我们看到了Golang标准库中log模块的使用,那么它是如何实现的呢?下面我从log.Logger开始逐步分析其实现。其源码可以参考官方地址1.Logger结构首先来看下类型Logger的定义:typeLoggerstruct{
musync.Mutex//ensuresatomicwrites;protectsthefollowingfields
prefixs..
分类:
其他好文 时间:
2014-05-06 17:10:28
阅读次数:
1024
插入排序(Insertion Sort),选择排序(Selection
Sort),冒泡排序和快速排序是我们经常会用到的排序算法。下面是这几种算法的基本思想和相对应的PHP实现代码。插入排序(Insertion
Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文...
分类:
Web程序 时间:
2014-05-05 12:48:01
阅读次数:
478
Golang的标准库提供了log的机制,但是该模块的功能较为简单(看似简单,其实他有他的设计思路)。不过比手写fmt.Printxxx还是强很多的。至少在输出的位置做了线程安全的保护。其官方手册见Golanglog(天朝的墙大家懂的)。这里给出一个简单使用的例子:packagemain
import(
"log"..
分类:
其他好文 时间:
2014-05-05 12:22:27
阅读次数:
20583
前两篇文章中介绍了选择排序和插入排序,今天我们继续往下来介绍其他的排序算法,介绍交换排序中的冒泡排序和快速排序。...
分类:
其他好文 时间:
2014-05-04 17:45:18
阅读次数:
270
快速排序
快速排序也使用了分而治之的策略来提高性能,而且不需要额外的内存,但是这么做的代价就是,列表不是对半切分的,因而,性能上就有所下降。
快速排序选择一个数值,一般称为“轴点”,虽然有很多选取轴点的方法,我们还是简单地把列表中第一个元素做为轴点了。轴点的作用是帮助把列表分为两个部分。列表完成后,轴点所在的位置叫做“切分点”,从这一点上把列表分成两部分供后续调用。
图12所示,54将作...
分类:
编程语言 时间:
2014-05-04 08:59:00
阅读次数:
388
【分析】
【伪代码】
【运行过程】
【代码】
/*********************************
* 日期:2014-04-01
* 作者:SJF0115
* 题目:快速排序
**********************************/
#include
#include
using namespace...
分类:
其他好文 时间:
2014-05-03 21:17:50
阅读次数:
476