快速排序算法

本文详细介绍了快速排序算法的基本思想和实现步骤,并提供了具体的代码示例。快速排序是一种高效的排序方法,通过选择分界值将数组分为两个子序列进行递归排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/* 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);
}*/

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值