当前位置:  编程技术>c/c++/嵌入式

C++快速排序的分析与优化详解

    来源: 互联网  发布时间:2014-10-27

    本文导语:  相信学过数据结构与算法的朋友对于快速排序应该并不陌生,本文就以实例讲述了C++快速排序的分析与优化,对于C++算法的设计有很好的借鉴价值。具体分析如下: 一、快速排序的介绍 快速排序是一种排序算法,对包含n个数...

相信学过数据结构与算法的朋友对于快速排序应该并不陌生,本文就以实例讲述了C++快速排序的分析与优化,对于C++算法的设计有很好的借鉴价值。具体分析如下:

一、快速排序的介绍

快速排序是一种排序算法,对包含n个数的输入数组,最坏的情况运行时间为Θ(n2)[Θ 读作theta]。虽然这个最坏情况的运行时间比较差,但快速排序通常是用于排序的最佳的实用选择。这是因为其平均情况下的性能相当好:期望的运行时间为 Θ(nlgn),且Θ(nlgn)记号中隐含的常数因子很小。另外,它还能够进行就地排序,在虚拟内存环境中也能很好的工作。

和归并排序一样,快速排序也是基于分治法(Divide and conquer):

分解:数组A[p..r]被划分成两个(可能为空)的子数组A[p..q-1]和A[q+1..r],使得A[p..q-1]中的每个元素都小于等于A[q],A[q+1..r]中的每个元素都大于等于A[q]。这样元素A[q]就位于其最终位置上了。

解决:通过递归调用快速排序,对子数组A[p..q-1]和A[q+1..r]排序。

合并:因为两个子数组是就地排序,不需要合并,整个数组已有序。

伪代码如下:

PARTITION(A, p, r) 
  x = A[p] 
  i = p 
  for j=p+1 to r 
    do if A[j]  File Name: QuickSort.cpp 
  > Author: SongLee 
 ************************************************************************/ 
#include 
#include // srand rand 
#include // clock_t clock 
using namespace std; 
 
void swap(int &a, int &b) 
{ 
  int tmp = a; 
  a = b; 
  b = tmp; 
} 
 
// 传统划分操作 
int Partition(int A[], int low, int high) 
{ 
  int pivot = A[low]; 
  int i = low; 
  for(int j=low+1; j

    
 
 

您可能感兴趣的文章:

  • C++ Lists(链表) 成员 sort():给list排序
  • C++实现顺序排序算法简单示例代码
  • C++选择排序算法实例
  • C++实现简单的希尔排序Shell Sort实例
  • c++冒泡排序示例分享
  • C++插入排序算法实例
  • C++冒泡排序算法实例
  • C++归并排序算法实例
  • C++实现位图排序实例
  • 利用C++的基本算法实现十个数排序
  • C++堆排序算法的实现方法
  • C++实现数组的排序/插入重新排序/以及逆置操作详解
  • C++ 关于STL中sort()对struct排序的方法
  • C++ 冒泡排序数据结构、算法及改进算法
  • C++ 先对数组排序,在进行折半查找
  • 用位图排序无重复数据集实例代码(C++版)
  • C++线性时间的排序算法分析
  • C++实现基数排序的方法详解
  • 基于C++实现的各种内部排序算法汇总
  • C++实现各种排序算法类汇总
  • C++中的几种排序算法
  • java map(HashMap TreeMap)用法:初始化,遍历和排序详解
  • oracle指定排序的方法详解
  • linux下top命令详解包括top命令参数使用及结果(virt,res,shr)排序举例说明
  • 深入Java冒泡排序与选择排序的区别详解
  • 深入IComparable与IComparer的排序实例详解
  • 快速排序的深入详解以及java实现
  • ASP.NET4 GridView的四种排序样式详解
  • 内部排序之堆排序的实现详解
  • java如何对map进行排序详解(map集合的使用)
  • C语言实现排序算法之归并排序详解
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 深入oracle特定信息排序的分析
  • 经典的委托排序(深入分析)
  • mysql 关键词相关度排序方法详细示例分析
  • PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
  • 深入理解堆排序及其分析
  • 深入C中常用的三种排序方法总结以及探讨分析
  • STL vector+sort排序和multiset/multimap排序比较
  • Java中的数组排序方式(快速排序、冒泡排序、选择排序)
  • <<大话数据结构>>中冒泡排序算法改进
  • 排序算法之PHP版快速排序、冒泡排序
  • php排序算法 PHP版快速排序与冒泡排序
  • java数组排序示例(冒泡排序、快速排序、希尔排序、选择排序)
  • 问题:DefaulTableModel是否有排序的功能,如果没有,jTable如何排序,我是从XML取数据到Table里。
  • java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
  • PHP快速排序小例子 php快速排序实现方法
  • C#排序算法之快速排序
  • 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
  • python 算法 排序实现快速排序
  • python算法学习之桶排序算法实例(分块排序)
  • python计数排序和基数排序算法实例
  • C#中使用快速排序按文件创建时间将文件排序的源码
  • 用c语言实现冒泡排序,选择排序,快速排序
  • 常用排序算法整理分享(快速排序算法、希尔排序)
  • php数组随机排序示例
  • jQuery表格排序插件 tablesorter
  • 可视化算法排序过程 Sound of Sorting
  • jQuery排序工具 jQuery.sorted




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3