C语言实现快速排序

完整代码:

复制代码
#include<stdio.h>

//用第一个元素将待排序序列划分成左右两个部分,返回排序后low的位置,即枢轴的位置
int partition(int arr[],int low,int high){
    //让待排序序列中的第一个元素成为基准
    int pivot=arr[low];
    //low=high代表一次划分完成
    while (low<high)
    {
        //从待排序序列的右边往左找
        //找到一个比基准小的元素,循环就结束
        while (low<high&&pivot<=arr[high])
        {
            high--;
        }
        //让比基准小的元素移动到左边
        arr[low]=arr[high];
        //从待排序序列的左边往右找
        //找到一个比基准大的元素,循环就结束
        while (low<high&&pivot>=arr[low])
        {
            low++;
        }
        //让比基准大的元素移动到右边
        arr[high]=arr[low];
    }
    //让基准元素成为枢轴,此时,枢轴左边都是比它小的元素,枢轴右边都是比它大的元素
    arr[low]=pivot;
    //返回枢轴
    return low;
}


//快速排序
//在区间中挑选第一个元素作基准,将小于基准的元素放在基准之前,大于基准的元素放在基准之后,再分别对小数区与大数区进行排序
//对于这两个区间就可以采用递归调用方式再次进行排序
void quick_sort(int arr[],int low,int high){
    //low=high代表一趟排序完成
    if (low<high)
    {
        //pivot作为划分左右两个区间的枢轴,即左子表 枢轴 右子表
        int pivot=partition(arr,low,high);
        //划分左子表
        quick_sort(arr,low,pivot-1);
        //划分右子表
        quick_sort(arr,pivot+1,high);
    }
}

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

运行截图:

相关推荐
zhengzhouliuhaha21 分钟前
智能医疗设备控费系统:以全院一体化管控,筑牢医疗资源“安全阀”
大数据·数据结构·人工智能·算法·安全·机器学习·软件需求
June`23 分钟前
CUDA程序效率如何计算以及工具如何使用
算法·cuda
兰令水26 分钟前
leecodecode【树形DP】【2026.6.11打卡-java版本】
java·算法·深度优先
装不满的克莱因瓶33 分钟前
RLHF中的PPO算法——大语言模型对齐优化的核心引擎
人工智能·python·深度学习·算法·机器学习·语言模型·自然语言处理
hahjee1 小时前
【鸿蒙PC】kcp 移植:AtomCode Skills 4 步速通单文件 C 库适配
c语言·华为·harmonyos
SWAGGY..1 小时前
Linux系统编程:(十三)环境变量
java·linux·算法
Black蜡笔小新1 小时前
自动化AI算法训练服务器DLTM一体化训推平台构建企业专属AI能力中台
人工智能·算法·自动化
sjsjs111 小时前
力扣3558. 给边赋权值的方案数 I
算法·leetcode·职场和发展
hujinyuan201601 小时前
2025年12月中国电子学会青少年机器人技术等级考试试卷(四级) 真题+答案
算法·机器人
啦啦啦啦啦zzzz1 小时前
算法总结(双指针)
c++·算法·双指针