快速排序函数声明
来源:互联网 发布:淘宝冻结卖家资金15天 编辑:程序博客网 时间:2024/05/21 19:22
快速排序函数声明:
void quick(T* a , int n);
快速排序算法简介
假设数组长度为n
数组定义方式: T a[10];
T是模板类型,相当于JAVA 1.5后出现的范型
先交换下标为 0 和 下标为 n>>1 的元素
swap(*a , a[n>>1]) ;
然后取得指向第二个元素的指针(也就是数组中第二个元素的地址)
T * L = a+1; 左指针
再取得指向最后一个元素的指针(也就是数组中最后一个元素的地址)
T* R = a + n - 1;
取中间值(交换后下标为0的数组元素)
T* mid = *a;
while(L < R)
{
while(L<R && *L <= mid) L++;
while(R>a && *R > mid) R--;
// *L mid *R 这种顺序下 L++,R--; /* 从左边开始搜索,只要出现一个比中间值大的数组元素 (自定义类型请重载 > 符号,友元,成员都可以),终止搜索 从右边开始搜索,只要出现一个比中间值小的数组元素 (自定义类型请重载 < 符号,友元,成员都可以),终止搜索
if(L < R) swap(*L , *R); /* 如果L ,R指针没有相遇 , 则交换 swap(const T& a ,const T& b)是using namespace std(相当于C中的#include<stdlib.h>) 定义好的,直接用 */
}
if(*a > *R) swap(*a,*R);
/ /如果位于0位置的中间值 > R指针指向的值 , 交换
这样一次排序完成
保证中间值左边都是比它小的值,右边都是比它大的值
然后递归
对中间值左边的数组元素排序
quick(a,R-a);
中间值地址是指针R的值
对中间值右边的数组元素排序
quick(R+1,n-(R-a)-1);
n<=1 if(n<=1) return;
- 快速排序函数声明
- javascript基础七(知识点类快速排序与函数声明函数表达式)
- java快速排序函数
- 快速排序--qsotr()函数
- 快速排序函数
- 快速排序函数模板
- 快速排序算法函数
- 快速排序函数qsort
- 快速排序函数模块
- sort函数 快速排序
- qsort快速排序函数
- 快速排序算法 函数实现
- c++快速排序标准函数
- 快速排序 qsort()函数
- 数据结构---快速排序封装函数
- 快速排序函数qsort介绍
- C语言 快速排序函数
- 快速排序 排序函数的个人小结
- (转)连接错误
- perl调用shell shell调用perl
- 网络知识大恶补
- java面试题
- Windows Phone7成为诺基亚核心目标
- 快速排序函数声明
- log4Net 以日期为文件名
- C# 参考之转换关键字:operator、explicit与implicit
- 惨啊
- Tomcat4的数据库连接池配置
- JSP验证码
- 使用Visual C#制作可伸缩个性化窗体
- dedecms二次开发用到的数据库操作类
- c++的动态绑定和静态绑定