博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[7] 算法之路 - 高速排序之3轴演算
阅读量:5290 次
发布时间:2019-06-14

本文共 1110 字,大约阅读时间需要 3 分钟。

左轴演算、中轴演算、右轴演算

题目:

高速排序法(quick sort)是眼下所公认最快的排序方法之中的一个(视解题的对象而定),尽管高速排序法在最差状况下能够达O(n2)。可是在多数的情况下,高速排序法的效率表现是相当不错的。

高速排序 - 算法

1、高速排序法的基本精神是在数列中找出适当的轴心,然后将数列一分为二

2、分别对左边与右边数列进行排序

左轴演算:

// 高速排序 - 左轴演算// 1. 附设两个指针left/right,并设最左端的数为最初枢轴pivot// 2. 从右向左搜索,找到第一个比pivot小的数,将其缓存进枢轴位置// 3. 从左向右搜索,找到第一个比pivot大的数。缓存进上一个比pivot小的数的位置程式进入2.循环// 4. 最后一次交换后获得的有效空位置为a[i] ,此时再将pivot赋值给a[i] 此时a[i]左边的数比a[i]小,右边的数比a[i]大//    再分别对其左边与左边进行高速排序int QuickSort2(int a[],int left,int right){	if(left
=pivotloc) j--; if(i
int QuickSort5(int a[],int left,int right){	if(left
pivotloc) j--; if(i
中轴演算

// 高速排序int QuickSort3(int a[],int left,int right){	int i,j,pivot;	if(left
pivot) ; if(i

右轴演算

// 高速排序演算// 1. 首先选择最右边的元素作为枢轴pivot// 2. 从左向右搜索,寻找小于pivot的数,将其与左边第一个未交换的元素交换// 3. 当搜索到最右边时,左边已交换的数都比pivot小。而未交换的都比pivot大// 4. 将左边的第一个未交换的元素与最右边的pivot元素交换,并返回该未交换元素的索引// 此时i左边的元素比i小,右边的比i大// 程式进入.循环分别对0 →i -1  及最右边的i+1→right进行递归(高速排序) 终于该序列会变为有序int Partition2(int a[],int left,int right){	int i = left,j;	int pivot=a[right];	for(j=left;j

转载于:https://www.cnblogs.com/cxchanpin/p/6944736.html

你可能感兴趣的文章
atitit agt sys 设置下级代理功能设计.docx
查看>>
HTML5 Canvas——基础入门
查看>>
SQL、LINQ、Lambda 三种用法(转)
查看>>
虚拟DOM
查看>>
IClient for js开发之地图的加载
查看>>
用css画三角形(提示框三角形)
查看>>
Uber中国在地方城市的人员架构是怎样的?
查看>>
再来一篇装逼老文章:屏幕传输算法
查看>>
Delphi 7下最小化到系统托盘
查看>>
抖动代码
查看>>
lsblk请参阅块设备
查看>>
SVM-SVM概述
查看>>
STL algorithm算法lower_bound和upper_bound(31)
查看>>
linux系统下怎么安装.deb文件?
查看>>
javascript常见编程模式举例
查看>>
列出man手册所有函数的方法
查看>>
数字信号处理101——DSP系统设计入门课程(1)
查看>>
[从jQuery看JavaScript]-匿名函数与闭包(Anonymous Function and Closure)【转】
查看>>
VisualStudio 常用快捷键-整理
查看>>
netty研究【1】:编译源代码
查看>>