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

【算法】快速排序

目录

核心思想:

过程:

演示:

第一趟:

第二趟:

 代码:


核心思想:

从待排序列中取一个元素作为中心,所有比它小或相等的元素一律放在前面,

所有比它大的元素放在后面,形成左右两个表,然后在对各个子表重新选择

中心元素,并按此规则调整,直到每一个子表的元素只剩最后一个,此时

便成为有序序列了。

过程:

设置两个指针 i 和 j ,分别从左往右找比基准元素大的和从右往左找比基准元素小

的元素

演示:

待排序序列:( 2   8   7  1   3    5     6     4)

选则关键字:   4      (以4为基准)

第一趟:

2和4进行比较,2小于4 不交换位置,指针 i 向右移动一位

8和4比较,8大于4,交换位置

此时,基准元素4左边元素都比4小,移动  j 指针向左移动一位

6与4比较,6大于4,不交换位置,指针 j 向左移动一位

 

5与4比较,5大于4,位置不交换,指针 j 向左移动一位

3与4比较,3小于4,交换位置

此时,基准元素4的右边元素都比4大,移动 i 指针向右移动一位

 7和4比较,7大于4,交换位置

 此时,基准元素4左边元素小于4,移动 j 指针向左移动一位

1与4比较,1小于4,交换位置

此时,基准元素4的左边元素都比4小,右边元素都比4大,至此第一趟排序结束

第二趟:

此时划分两个部分,第一部分(2 3 1)  第二部分 (7 5 6 8)

分别按照上述方法进行排列

最后结果 1 2 3  4   5   6   7   8  9 

 代码:

#include <stdio.h>// 定义数组长度
#define N 10// 快速排序函数
void quick_sort(int arr[], int left, int right)
{if (left < right) {int i = left, j = right, pivot = arr[left];while (i < j) {while (i < j && arr[j] >= pivot) {j--;}if (i < j) {arr[i++] = arr[j];}while (i < j && arr[i] <= pivot) {i++;}if (i < j) {arr[j--] = arr[i];}}arr[i] = pivot;quick_sort(arr, left, i - 1);quick_sort(arr, i + 1, right);}
}// 主函数
int main()
{int arr[N] = {5, 9, 3, 6, 1, 8, 2, 7, 4, 0};quick_sort(arr, 0, N - 1);for (int i = 0; i < N; i++) {printf("%d ", arr[i]);}return 0;
}

 

 

 

 

 

 

 

 

 

http://www.lryc.cn/news/70075.html

相关文章:

  • 【移动端网页布局】流式布局案例 ③ ( 实现搜索栏功能 | 伪元素选择器 | 子绝父相 | 外边距塌陷处理 | 二倍精灵图处理方案 )
  • 【C++修炼之路】30.可变参数模板包装器
  • Linux防火墙之firewalld基础
  • GitLab CI/CD
  • PHP复习资料(未完待续)
  • 【python】pytorch包(第二章)API使用与介绍
  • Linux驱动基础(SR501人体感应模块)
  • Android Studio Flamingo (火烈鸟) 升级踩坑记录
  • 【JAVA凝气】异常篇
  • C++中的函数模板
  • MapReduce【Shuffle-Combiner】
  • postman接口自动化测试
  • 历经70+场面试,我发现了大厂面试的套路都是···
  • 可视区域兼容性问题的思考及方法封装
  • 安全工具 | CMSeeK [指纹识别]
  • Android新logcat使用技巧
  • 使用Makefile笔记总结
  • npm下载依赖项目跑不起来--解决方案
  • SolVES模型生态系统服务功能社会价值评估
  • Godot引擎 4.0 文档 - 入门介绍 - 学习新功能
  • 如何进行MySQL漏洞扫描
  • C语言函数大全-- x 开头的函数(3)
  • 计算机图形学-GAMES101-12阴影
  • iOS_Swift高阶函数
  • 探索Vue的组件世界-组件复用
  • OMA通道-2
  • SAP 用CO13冲销工序报工,但是没有产生货物移动(TCODE:CO1P 、 SE38 :CORUPROC,CORUAFWP)
  • 信息收集-服务器信息
  • 连续签到积分兑换试用流量主小程序开发
  • C语言—自定义类型(结构体、枚举、联合)