C语言数据结构 快速排序实例详解

发布时间 - 2026-01-11 02:37:04    点击率:

C语言数据结构 快速排序实例详解

一、快速排序简介

快速排序采用分治的思想,第一趟先将一串数字分为两部分,第一部分的数值都比第二部分要小,然后按照这种方法,依次对两边的数据进行排序。

二、代码实现

#include <stdio.h>


/* 将两个数据交换 */
void swap(int* Ina , int* Inb)
{
  int temp = *Ina;
  *Ina = *Inb;
  *Inb = temp;
}

/* 进行一趟的快速排序,把一个序列分为两个部分 */
int getPartion(int* InArry,int InBegin,int InEnd)
{
  /* 刚开始的分隔线是第一个 */
  int part = InBegin;
  int index = 0;

  if(InEnd >= InBegin)
  {
    part = InBegin;
    for(index = InBegin+1; index <= InEnd; index++)
    {
      if(InArry[InBegin] >= InArry[index])
      {
        /* 交换位置 */
        swap(&InArry[part+1],&InArry[index]);
        part++;
      }
    }

    /* 把第一个数放到part处去 */
    swap(&InArry[InBegin],&InArry[part]);

    return part;
  }

}

/* 快速排序函数
* InArry:输入的数组
* InBegin:数组的开始
*  InEnd:数组的结束
*/
void quickSort(int* InArry,int InBegin,int InEnd)
{
  if(InArry == NULL || InEnd <= InBegin)
  {
    return;
  }

  int part = 0;
  part = getPartion(InArry,InBegin,InEnd);

  /* 递归调用 */
  quickSort(InArry,0,part-1);
  quickSort(InArry,part+1,InEnd);
}

int main()
{
  int a[] = {49,38,65,97,76,13,27};
  int index = 0;

  int len = sizeof(a)/sizeof(int);

  /* 先遍历打印一下数组的元素 */
  for(index = 0; index < len; index++)
  {
    printf("%d ",a[index]);
  }
  printf("\n");

  /* 调用快速排序函数 */
  quickSort(a,0,len-1);

  /* 再遍历打印一下数组的元素 */
  for(index = 0; index < len; index++)
  {
    printf("%d ",a[index]);
  }
  printf("\n");



  return 0;
}

以上就是使用C语言数据结构 快速排序的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站 的支持!


# C语言数据结构  # 快速排序实例  # 快速排序的实例  # c语言快速排序算法示例代码分享  # C语言实现选择排序、冒泡排序和快速排序的代码示例  # 用c语言实现冒泡排序  # 选择排序  # 快速排序  # C语言简单实现快速排序  # C语言快速排序函数用法(qsort)  # C语言实现快速排序算法  # C语言的冒泡排序和快速排序算法使用实例  # C语言中快速排序和插入排序优化的实现  # C语言实现快速排序  # C语言实现快速排序算法实例  # 遍历  # 数据结构  # 递归  # 第一个  # 如有  # 希望能  # 刚开始  # 谢谢大家  # 都比  # 先将  # 两部分  # 第一部分  # 第二部分  # 疑问请  # 分隔线  # 这种方法  # void  # Inb  # Ina  # int 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何处理CORS跨域请求?(配置示例)  如何快速生成凡客建站的专业级图册?  如何在IIS7中新建站点?详细步骤解析  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  如何快速上传自定义模板至建站之星?  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  如何为不同团队 ID 动态生成多个独立按钮  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  Laravel如何与Pusher实现实时通信?(WebSocket示例)  JavaScript实现Fly Bird小游戏  在线制作视频网站免费,都有哪些好的动漫网站?  Laravel如何使用Gate和Policy进行授权?(权限控制)  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  如何确认建站备案号应放置的具体位置?  linux写shell需要注意的问题(必看)  如何用JavaScript实现文本编辑器_光标和选区怎么处理  如何快速查询网址的建站时间与历史轨迹?  如何为不同团队 ID 动态生成多个非值班状态按钮  网易LOFTER官网链接 老福特网页版登录地址  Laravel怎么实现模型属性的自动加密  北京企业网站设计制作公司,北京铁路集团官方网站?  如何确保FTP站点访问权限与数据传输安全?  如何注册花生壳免费域名并搭建个人网站?  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  如何快速登录WAP自助建站平台?  无锡营销型网站制作公司,无锡网选车牌流程?  如何在宝塔面板中创建新站点?  再谈Python中的字符串与字符编码(推荐)  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  如何快速生成高效建站系统源代码?  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  LinuxShell函数封装方法_脚本复用设计思路【教程】  简单实现Android验证码  郑州企业网站制作公司,郑州招聘网站有哪些?  如何快速搭建虚拟主机网站?新手必看指南  零服务器AI建站解决方案:快速部署与云端平台低成本实践  想要更高端的建设网站,这些原则一定要坚持!  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  七夕网站制作视频,七夕大促活动怎么报名?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何确保西部建站助手FTP传输的安全性?