快速排序算法
来源:互联网 发布:淘宝店铺彻底释放 编辑:程序博客网 时间:2024/06/05 06:43
/* date:2014.12.14
快速排序思路:和冒泡排序相似,基于比较和交换来实现排序,改进后效率高了。
流程:1).首先设置一个分界值,通过该值将数组分成左右两部分,左边序列小于等于它,右边序列大于等于它;
2).对于左边和右边的序列,分别执行(1)操作;
3).重复(2),相当于递归,直到有序。
时间复杂度:最差O(n^2),平均O(nlogn).
空间复杂度:O(log2(n))-O(n).
是一种 不稳定 的排序算法.
*/
void QuickSort(int *arr,int left,int right)
{
int key,temp,ltemp,rtemp;
ltemp = left;
rtemp = right;
key=arr[(left + right) / 2];
while (ltemp <= rtemp)
{
while (arr[ltemp] < key)
{
ltemp ++;
}
while (key < arr[rtemp])
{
rtemp --;
}
if (ltemp <= rtemp)
{
temp = arr[ltemp];
arr[ltemp] = arr[rtemp];
arr[rtemp] = temp;
ltemp ++;
rtemp --;
}
}
if (left < rtemp)
{
QuickSort(arr,left,rtemp);
}
if (ltemp < right)
{
QuickSort(arr,ltemp,right);
}
/* //用以下代码也可
if (left < rtemp)
{
QuickSort(arr,left,ltemp - 1);
}
if (ltemp < right)
{
QuickSort(arr,rtemp + 1,right);
}*/
快速排序思路:和冒泡排序相似,基于比较和交换来实现排序,改进后效率高了。
流程:1).首先设置一个分界值,通过该值将数组分成左右两部分,左边序列小于等于它,右边序列大于等于它;
2).对于左边和右边的序列,分别执行(1)操作;
3).重复(2),相当于递归,直到有序。
时间复杂度:最差O(n^2),平均O(nlogn).
空间复杂度:O(log2(n))-O(n).
是一种 不稳定 的排序算法.
*/
void QuickSort(int *arr,int left,int right)
{
int key,temp,ltemp,rtemp;
ltemp = left;
rtemp = right;
key=arr[(left + right) / 2];
while (ltemp <= rtemp)
{
while (arr[ltemp] < key)
{
ltemp ++;
}
while (key < arr[rtemp])
{
rtemp --;
}
if (ltemp <= rtemp)
{
temp = arr[ltemp];
arr[ltemp] = arr[rtemp];
arr[rtemp] = temp;
ltemp ++;
rtemp --;
}
}
if (left < rtemp)
{
QuickSort(arr,left,rtemp);
}
if (ltemp < right)
{
QuickSort(arr,ltemp,right);
}
/* //用以下代码也可
if (left < rtemp)
{
QuickSort(arr,left,ltemp - 1);
}
if (ltemp < right)
{
QuickSort(arr,rtemp + 1,right);
}*/
}
0 0
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法------快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法---快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法:快速排序
- 排序算法 快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 【排序算法】快速排序
- 排序算法--快速排序
- 排序算法:快速排序
- 第16周项目2-用指针玩转字符串-(3)求字符串长度
- 顺序表的实现(王红梅版)
- linux常用命令详解
- ITK的图像配准
- 手把手教你怎么使用支付宝快捷支付android版demo
- 快速排序算法
- Search a 2D Matrix
- 键盘录入
- 求数列的和
- 使用spring data jpa + maven开发服务端接口
- java环境变量中 用户变量与系统变量的区别
- varchar和Nvarchar区别
- 为什么营养保健品需要坚持用3-6个月才会达到明显效果呢?
- 利用JS弹出层实现简单的动态提示“正在加载中,请稍等...