目录

  • 一.简介
  • 二.数组快速法排序原理
  • 三.数组快速法排序实战
  • 四.猜你喜欢

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

一.简介

经过前面的学习,我们已经学会了数组遍历,在开发中,我们经常回碰到对数组进行排序,例如:学习成绩排序,身高排序,年龄排序等等;在 C 语言中常见的数组排序一共有四种:

  • 1.冒泡法排序
  • 2.选择法排序
  • 3.插入法排序
  • 4.快速法排序

二.数组快速法排序原理

快速排序法号称是目前最优秀的算法之一,实现思路是,将一个数组的排序问题看成是两个小数组的排序问题,而每个小的数组又可以继续看成更小的两个数组,一直递归下去,直到数组长度大小最大为 2。

三.数组快速法排序实战

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 数组排序 – 快速法排序
//@Time:2021/06/08 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/#include<stdlib.h>
#include<stdio.h>
//快速排序
void quickSort(int *arr, int l, int r)
{//此处编写代码实现快速排序int i, j, x, temp;if (l < r){i = l;j = r;x = arr[(l + r) / 2];//以中间元素为轴while (1){while (i <= r && arr[i] < x)i++;while (j >= 0 && arr[j] > x)j--;if (i >= j) //相遇则跳出break;else{temp = arr[i];arr[i] = arr[j];arr[j] = temp;//交换}}quickSort(arr, l, i - 1); //对左半部分进行快排quickSort(arr, j + 1, r); //对右半部分进行快排}
}
void main()
{int a[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 10 };int len = sizeof(a) / sizeof(int);for (int i = 0; i < len; i++){printf("排序之前:index:%d  value:%d\n", i, a[i]);}//快速法排序quickSort(a, 0, 9);printf("-----------------------------------\n");for (int i = 0;i<len;i++){printf("排序之后:index:%d  value:%d\n", i, a[i]);}system("pause");
}/*
输出:排序之前:index:0  value:9
排序之前:index:1  value:8
排序之前:index:2  value:7
排序之前:index:3  value:6
排序之前:index:4  value:5
排序之前:index:5  value:4
排序之前:index:6  value:3
排序之前:index:7  value:2
排序之前:index:8  value:1
排序之前:index:9  value:10
-----------------------------------
排序之后:index:0  value:1
排序之后:index:1  value:2
排序之后:index:2  value:3
排序之后:index:3  value:4
排序之后:index:4  value:5
排序之后:index:5  value:6
排序之后:index:6  value:7
排序之后:index:7  value:8
排序之后:index:8  value:9
排序之后:index:9  value:10
请按任意键继续. . .
*/

四.猜你喜欢

  1. 安装 Visual Studio
  2. 安装 Visual Studio 插件 Visual Assist
  3. Visual Studio 2008 卸载
  4. Visual Studio 2003/2015 卸载
  5. C 语言格式控制符/占位符
  6. C 语言逻辑运算符
  7. C 语言三目运算符
  8. C 语言逗号表达式
  9. C 语言 for 循环
  10. C 语言 while 循环
  11. C 语言 do while 和 while 循环
  12. C 语言 switch 语句
  13. C 语言 goto 语句
  14. C 语言 char 字符串
  15. C 语言 sizeof 和 strlen 函数区别
  16. C 语言 strcpy 和 strcpy_s 函数区别
  17. C 语言 memcpy 和 memcpy_s 区别
  18. C 语言 数组定义和使用
  19. C 语言 数组遍历
  20. C 语言 数组排序 – 冒泡法排序
  21. C 语言 数组排序 – 选择法排序
  22. C 语言 数组排序 – 插入法排序
  23. C 语言 数组排序 – 快速法排序

未经允许不得转载:猿说编程 » C 语言 数组排序 – 快速法排序

C语言 数组排序 – 快速法排序 - C语言零基础入门教程相关推荐

  1. C语言 数组排序 – 选择法排序 - C语言零基础入门教程

    目录 一.简介 二.数组选择法排序原理 三.数组选择法排序实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 经过前面的学习, ...

  2. C语言 数组排序 – 冒泡法排序 - C语言零基础入门教程

    目录 一.简介 二.数组冒泡法排序原理 三.数组冒泡法排序实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 经过前面的学习, ...

  3. C语言 *p++/*(p)++/*(p++)/*p++ - C语言零基础入门教程

    目录 一.简介 二.*p++ 三.*++ p/++ *p 四.* (p++)与*(++p) 五.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 ...

  4. C语言 指针 p++ / p-- - C语言零基础入门教程

    目录 一.变量 i++/i– 二.指针 p++/p– 1.通过下标访问数组元素 2.通过指针偏移访问数组元素 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> ...

  5. C语言 指针声明和定义 - C语言零基础入门教程

    目录 一.指针简介 1.内存 2.内存地址 3.指针声明 二.指针类型 三.声明并初始化一个指针 1.声明指针并直接初始化 – 推荐 2.先声明指针在初始化 – 不推荐 四.查看指针地址和指针的值 五 ...

  6. C语言 二维数组遍历 - C语言零基础入门教程

    目录 一.计算一维数组长度 二.计算二维数组长度 1.二维数组行数 2.二维数组列数 3.二维数组的元素个数 = 二维数组行数 * 二维数组列数 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C ...

  7. C语言 二维数组行数和列数计算 - C语言零基础入门教程

    目录 一.计算一维数组长度 二.计算二维数组长度 1.二维数组行数 2.二维数组列数 3.二维数组的元素个数 = 二维数组行数 * 二维数组列数 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C ...

  8. C语言 二维数组定义和使用 - C语言零基础入门教程

    目录 一.二维数组简介 二.定义二维数组并初始化 1.定义二维数组 2.初始化二维数组 三.访问二维数组 四.修改二维数组 五.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 & ...

  9. C语言 十进制和二进制相互转换 - C语言零基础入门教程

    目录 一.十进制和二进制区别 1.基数不同 2.有效字符不同 3.用途不同 二.十进制转二进制 三.二进制转十进制 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >& ...

最新文章

  1. 【中台】“中台”概念究竟是什么?制造业企业需要拥抱吗?
  2. ide setting
  3. python time智能等待_python中等待怎么表示
  4. ab753变频器参数怎么拷贝到面板_技术贴:100吨连铸安川变频器的更换
  5. 牛客 - Hash(思维+进制转换)
  6. linux php和java环境变量配置_Linux下Java环境变量的安装与配置
  7. mysql约束添加删除数据_mysql中约束的添加,修改,与删除
  8. 技术系统进化法则包括_技术系统进化论,模式五、技术集成以增加系统功能
  9. 物流×科技,易流如何用IoT技术加速物流业数字化升级?...
  10. hibernate优化
  11. JAVA—字符串怎么转换成整数
  12. Angularjs中设置cookies的过期时间
  13. 关于管理的十个经典故事
  14. 非门芯片 74AHC1G08 74AHC1G04 74AHC1G02的区别
  15. Win10系统IE浏览器设置代理上网的方法
  16. C++ STL求全排列和组合
  17. 阿里巴巴java开发手册(alibaba网址在线查看或下载)
  18. kali虚拟机安装提示安装系统步骤失败
  19. 【华为思科】访问web服务器
  20. 使用KaTeX渲染数学公式

热门文章

  1. 国产数据库存储引擎X-Engine的科研之路
  2. 2018年度机器学习50大热门网文
  3. 七个不容易被发现的生成对抗网络(GAN)用例
  4. 张勇:新技术是阿里“五新战略”的引擎
  5. 终于有人把大数据讲明白了。。。
  6. 闲鱼的云原生故事:靠什么支撑起万亿的交易规模?
  7. Spring Cloud 云架构下的微服务架构:部门微服务(Dept)
  8. IT公司刻板印象合集:程序员都秃头,商务个个是人精
  9. 刷爆了!李彦宏:这类程序员我给100万!你怎么看?
  10. 【BAT面试现场】如何判断一个数是否在40亿个整数中?