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

快速排序C语言实现程序

快速排序

  快速排序算法一种最常见的排序算法,其核心思想就是 分治 ,具体的:
  1) 选定一个基准数;
  2) 分区,将所有大于基准数的数据分为一区,将所有小于等于基准数的数据分为一区;
  3) 递归,对上述分区重复(1)(2),直到每个分区只有一个数。 
  
下面看一个动画来快速理解该算法是怎么工作的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

// 快速排序递归实现
void QuickSort(int *array, int low, int high)
{
    if (low < high)
    {   // 找到新的分区点
        int pivotloc = Partition(array, low, high);
        QuickSort(array, low, pivotloc - 1); // 递归左边的区间 
        QuickSort(array, pivotloc + 1, high);// 递归右边的区间 
    }
}

// 分区
int Partition(int *array, int low, int high)
{
    int pivotkey = array[low];//初始化,中值元素,选择区间的第一个元素 作为比较元素
    array[0] = array[low];//保存中间变量,区间左下标,元素 
    while (low < high)// 从右找小的元素  从左找大的元素 调换 直到 碰头
    {
        // 从右向左寻找 比 比较元素pivotkey小的 数 array[high]
        while (low < high && array[high] >= pivotkey)
        {
            high--;//右索引减小
        }
        
        //把 比 比较元素pivotkey 小的元素 放到 原先比较元素的位置上 
        array[low] = array[high];
        
        // 从左向右 找 比 比较元素 pivotkey 大的数  array[low]
        while (low < high && array[low] <= pivotkey)//找到比  pivotkey= array[low]大的元素 
        {
            low++;//左索引上升
        }
        
        // 大的数放在 原来 从右向左找 比 比较元素小的位置上 
        array[high] = array[low];
    }
    array[low] = array[0];// 这里直接等于 pivotkey 也可以
    return low;// 返回 分割区间
}

相关文章:

  • 如何使用ArcGIS Pro生成等高线
  • 2024年软件测试岗位-面试
  • PyTorch概述(四)---DataLoader
  • 如何使用idea连接服务器上的mysql?
  • c# HttpCookie操作,建立cookie工具类
  • Python学习路线图
  • 【C++】类和对象之拷贝构造函数篇
  • docker install private registry 【docker 安装 registry 仅证书认证】
  • mybatis中foreach批量插入并返回主键
  • oppo手机如何录屏?解锁录屏新功能!
  • SQL 中如何实现多表关联查询?
  • 【达梦数据库】数据库的方言问题导致的启动失败
  • 【pytorch】pytorch模型可复现设置
  • 5 buuctf解题
  • python 提取PDF文字
  • django自定义后端过滤
  • 【精选】网络安全大厂面试题 2.0
  • 物联网在智慧景区中的应用:提升游客体验与运营效率
  • 中国农业无人机行业市场现状分析与投资前景预测研究报告
  • This dependency was not found解决方法