排序算法5--快速排序

原创 2007年10月07日 22:01:00
 快速排序也是分治策略的一种典型体现:将待排序数据划分成更小的序列,对每个划分的序列进行交换。这里所谓的交换是指在单独的一个序列里面,选取一个枢纽(pivot),以此枢纽为划分点,将该序列里面所有小于枢纽的数据放于枢纽的左边,大于枢纽值的数据放于枢纽值的右边。
    枢纽的选择有多种,一般有四种选择:选取序列第一个元素、选取序列最后一个元素、选取序列(First +Last)/2个元素、随机选取一个元素。在本文代码中,我们选取的是第一个元素。
template <class T>
int partition(T *Array, int First, int Last)
...{
    T temp 
= Array[First];

    
while (First < Last)
    
...{
        
while (First < Last && Array[Last] >= temp)
            Last
--;
        Array[First] 
= Array[Last];

        
while (First < Last && Array[First] <= temp)
            First
++;
        Array[Last] 
= Array[First];
    }


    Array[First] 
= temp;
    
return First;
}


template 
<class T>
void quick_sort(T *Array, int First, int Last)
...{
    
int p;

    
if (First < Last)
    
...{
        p 
= partition(Array, First, Last);
        quick_sort(Array, First, p 
- 1);
        quick_sort(Array, p 
+ 1, Last);
    }

}

redis学习5--主从复制

主从复制:主机数据更新后,根据配置和策略自动同步到备机的master/slave机制,其中master以写为主,slave以读为主。比如在主机上执行 set k1 v1后,在从机上get v1 获得的...
  • wu_0916
  • wu_0916
  • 2018年01月07日 01:32
  • 10

JavaScript学习笔记5--数组

1.      创建数组 数组直接量中的值不一定要是常量,可以是任意表达式; var base = 1024;   var table = [base, base+1,base+2]; 它...
  • zxx901221
  • zxx901221
  • 2016年12月11日 11:29
  • 82

实战5--读入员工工资

输入代码: /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:sum123.cpp * 作 者:林海云 ...
  • linhaiyun_ytdx
  • linhaiyun_ytdx
  • 2014年11月29日 09:17
  • 617

greenDAO系列5--查询

本文转自:http://my.oschina.net/u/1052509/blog/312608 摘要 查询就是返回符合一定条件的实体。可使用原始的SQL语句执行查询;或是更好的方式...
  • wurensen
  • wurensen
  • 2015年08月23日 14:35
  • 9906

ARM与x86之5--结束语

多年以前,我有编写一系列关于处理器体系结构的书籍,包括PowerPC, x86和ARM。两年的坚持,我完成了《Linux PowerPC详解—核心篇》,本应还要写一本《Linux PowerPC详解—...
  • sailing_w
  • sailing_w
  • 2017年02月12日 19:43
  • 189

laravel系列5-- 中间件

引言中间件使得过滤请求变得更加方便,例如在laravel中有认证中间件可以帮助判断用户认证情况,所有的中间件都在app/Http/Middleware文件夹下。定义中间件生成新的中间件使用Artisa...
  • fhl0000
  • fhl0000
  • 2015年12月29日 10:59
  • 372

5--指针与数组(下)

一:定义数组类型(数组元素类型+数组大小) typedef  type(name)[size] 例如:typedef    int(AINT5)[5];    typedef     float(AF...
  • u013385925
  • u013385925
  • 2016年04月25日 20:30
  • 171

作业5--单链表

2-1 设h为不带头结点的单向链表。在h的头上插入一个新结点t的语句是:(2分) h=t; t->next=h->next;t->next=h->next; h=t;h=t; ...
  • sususuyesylvia
  • sususuyesylvia
  • 2017年12月18日 14:58
  • 51

笔记5--数据存储

android:inputType="textPassword" android一共提供了四种数据存储方式。 1、File:即常说的文件存储方式,常用于存储大数量的数据,缺点是更新数据...
  • mwj_88
  • mwj_88
  • 2014年03月27日 20:45
  • 471

UML笔记5--顺序图

隔离区,操作符sd(sequence diagram),操作符ref(交互事件)
  • piaoshi000
  • piaoshi000
  • 2015年02月03日 17:46
  • 432
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:排序算法5--快速排序
举报原因:
原因补充:

(最多只允许输入30个字)