快速排序算法(C语言)

本文介绍了如何使用C语言实现快速排序算法。通过定义`swap`函数交换数组元素,然后在`qsort`函数中利用递归进行数组划分,最终在`main`函数中展示排序结果。快速排序是一种高效的排序算法,平均时间复杂度为O(n log n)。

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

#include<stdio.h>
///交换函数
void swap(int v[],int i,int j){
    int temp=v[i];
    v[i]=v[j];
    v[j]=temp;
}
/// 快速排序函数-递归
void qsort(int v[],int left,int right){
    int i,last;
    if(left>=right){    ///若数组包含的元素数少于两个,不执行任何操作
        return ;
    }
    swap(v,left,(left+right)/2);    ///将中间值作为划分子集的元素(枢轴),移动到v[0],也可以不加直接将第一个元素作为枢轴
    last=left;
    for (i=left+1;i<=right;i++)
    {
        if(v[i]<v[left]){
            swap(v,++last,i);
        }
    }
    swap(v,left,last);      ///将枢轴移动到中间位置
    qsort(v,left,last-1);   ///对枢轴左右,递归进行划分
    qsort(v,last+1,right);

}
int main(){
    int i,s[]={6,2,7,3,1};
    qsort(s,0,4);
    for(i=0;i<5;i++){
        printf("%d ",s[i]);
    }
    return 0;
}

参考:《C程序设计语言》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值