当前位置: 首页 > news >正文

C语言学习,快速排序

C语言,快速排序是一种高效排序算法,它采用分治法策略,在区间中随机挑选一个元素作基准,将小于基准的元素放在基准之前,大于基准的元素放在基准之后,再分别对小数区与大数区进行排序。

示例:

// 交换
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}
 
// 分区函数,选择数组中间元素作为基准
int partition(int arr[], int low, int high) {
    int pivot = arr[high]; // 选择最右边元素作为基准
    int i = (low - 1); // 较小元素的索引
 
    for (int j = low; j <= high - 1; j++) {
        // 如当前元素小于或等于基准
        if (arr[j] <= pivot) {
            i++; // 增加较小元素的索引
            swap(&arr[i], &arr[j]);
        }
    }
    swap(&arr[i + 1], &arr[high]);
    return (i + 1);
}
 
// 快速排序函数
void quickSort(int arr[], int low, int high) {
    if (low < high) {
        // pi 是分区索引,arr[pi] 已经在正确位置
        int pi = partition(arr, low, high);
 
        // 分别对分区索引左右两边的子数组进行排序
        quickSort(arr, low, pi - 1);
        quickSort(arr, pi + 1, high);
    }
}
 
// 打印
void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}
 
// 主函数
int main() {
    int arr[] = {10, 7, 8, 9, 1, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
    quickSort(arr, 0, n - 1);
    printf("Sorted array: \n");
    printArray(arr, n);
    return 0;
}

 

相关文章:

  • 融合DWRSeg扩张式残差网络的YOLOv8:小目标检测中的技术突破与优化探索
  • 【问题解决方案】随笔 - vscode里面出现双环境解决方案
  • VMware虚拟机Mac版安装Win10系统
  • Kubernetes 从入门到精通:解锁容器编排的终极指南 [特殊字符]
  • Jenkinsfile流水线构建教程
  • 3.15 AI Agent 技术全景解析:从核心能力到企业级应用实践
  • html中的css
  • 算法教程:香槟塔问题
  • SAP中什么是虚拟装配?
  • 智能合约安全 | 合约无效化攻击
  • 2025年- G19-Lc93-206.反向链接链表-java版
  • Mysql——约束与多表查询
  • DeepSeek 助力 Vue3 开发:打造丝滑的标签输入(Tag Input)
  • DeepSeek:我的AI助手之旅
  • 大白话React第七章深入学习 React 高级特性与优化阶段
  • 谷歌推出PaliGemma 2 mix:用于多任务的视觉语言模型,开箱即用。
  • Hive从入门到运用
  • 使用 Apache Dubbo 释放 DeepSeek R1 的全部潜力
  • DeepSeek 开源了 DeepEP
  • 单片机病房呼叫系统设计
  • 乌拉圭前总统何塞·穆希卡去世
  • 商务部召开外贸企业圆桌会:全力为外贸企业纾困解难,提供更多支持
  • 苹果或将于2027年推出由玻璃制成的曲面iPhone
  • 《尤物公园》连演8场:观众上台,每一场演出都独一无二
  • “仓促、有限”,美英公布贸易协议框架,两国分别获得了什么?
  • 汪明荃,今生不负你