快速排序|学习笔记

简介: 快速学习快速排序

开发者学堂课程【你的第一门 C 语言课:快速排序】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/444/detail/5485


快速排序


目录:

一、分治法

二、排序

三、快速排序法


一、分治法

1、分治法

(1)、大事化小,小事化了:把一件事情,分成各个小部分,在进行处理。

(2)、递归就是分治法的实现。把一个大的问题分成若干个小的问题,再把小的问题分成更小的问题,直到不能再分,从最简单的那个问题入手解决,层层回归,到最后大问题自然也就解决了。

(3)、例子:

比如国家要统计 GDP 总和,而你是这件事的负责人,你可以怎么做?可以找一张大的中国地图,然后自东向西、从南到北派下属去遍历每一寸国土,最后把所有的GDP 加起来就是一个总和。

但是这个很耗费物力人力,不建议这样做。那在现实中,可以将国家分成各个省市,再把省市分成各个区县。区县再分为乡镇,从乡镇开始统计,层层统计,向上汇报,最后加起来就是整个国家 GDP 的总和。这就是分治事项。如果要对整个国家的 GDP 进行排名,那么就需要排序算法了,以下以此为论点展开讲述。

 

二、排序

1、排序就是将一堆零零散散的数据重大到小、从小到大排成一个序列。

2、排序用的地方很多:

例如:

(1)期末考试老师要给所有同学的成绩进行一个排序,排出前几名拿奖学金和后几名叫家长;

(2)打开招聘网站经常就会优先考虑待遇较高的或者待遇较低的职位,肯定是待遇较高的,那么就应该对薪酬从高到低进行排序;

(3)在淘宝中购买化妆品,但不知道哪一款合适,所以可以点销量进行排序;

(4)排序的方法有很多,比如,耳熟能详的冒泡排序、鸡尾酒排序、插入排序、选择排序、快速排序等。

 

三、快速排序算法

1、快速排序是20世纪十大算法之一。

快速排序算法的基本思想是:通过一趟排序将待排序数据分割成独立的两部分,其中一部分的所有元素均比另一部分的元素小,然后分别对这两部分继续进行排序,重复上述步骤直到排序完成。

图片46.png

1) 现在就要把他分割成两部分,然后就需要去找基准点 ,起始是0,最后是9,(0+9)/2=4,那么下标就应该是4的位置,然后选择中间元素7作为基准点。

2) i 是从左往右走的下标,j 是从右往左走的下标,从左往右找到大于等于基准点的元素。

3) 从右到左找到小于等于基准点的元素。

4) 两个元素进行互换

5) 从左往右找到大于等于基准点的元素

6) 从右往左找打小于等于基点的元素

7) 两个元素进行互换

8) 从左往右找到大于等于基点的元素

从右往左找打小于等于基点的元素

9) 两个元素进行互换

10) 一直重复这三个相同的步骤,直到 i > j。第一趟结束

11) 按照第一趟的方法递归左边和右边两个例子

12) 排序完成

实现代码:

#include

void quick_sort(int array[], int Left, int right )

{

inti=left,j=right;

int temp;

int pivot ;

pivot = array[(Left + right) / 2];

while (i <= j)

{

//从左到右找到大于等于基准点的元素

while (array[i] < pivot)

i++;

}

//从右到左找到小于等于基准点的元素

while (array[j] > pivot)

{

j--;

}

//如果主<= j,则互换

if(i<=j)

{

temp = array[i];

array[i] = array[j] ;

arraylj] = temp;

i++ ;

j-- ;

}

}

if (Left < i)

{

quick_ sort(array, Left, j) ;

}

if (i < right)

{

quick_ sort(array, i, right) ;

}

int main( void)

{

int array[] = {73, 108, 111, 118, 101, 70, 105,115, 104,67,46,99,111, 109};

int i, Length ;

Length = sizeof(array) / sizeof(array[0]);

quick sort(array, 0, length-1);

printf("排序后的结果是: ");

for (i = 0; i < Length; i++)

{

printf("Sd ”,array[i]);

}

putchar('\n')

return 0 ;

}

运行:gcc quick sort.c && ./a. out

排序后的结果效果图:

图片47.png

序列被分为两个序列,左边的都小于等于基点,右边的大于等于基点,然后进行递归。

目录
打赏
0
0
0
0
55
分享
相关文章
kde
|
12天前
|
Docker镜像加速指南:手把手教你配置国内镜像源
配置国内镜像源可大幅提升 Docker 拉取速度,解决访问 Docker Hub 缓慢问题。本文详解 Linux、Docker Desktop 配置方法,并提供测速对比与常见问题解答,附最新可用镜像源列表,助力高效开发部署。
kde
7977 49
|
9天前
typora免费版,激活方法,Typora使用教程
Typora是一款简洁高效的Markdown编辑器,支持即时渲染。本教程涵盖安装方法、文件操作、视图控制、格式排版、字体样式及Markdown语法,助你快速上手使用Typora进行高效写作。
2102 4
Dify MCP 保姆级教程来了!
大语言模型,例如 DeepSeek,如果不能联网、不能操作外部工具,只能是聊天机器人。除了聊天没什么可做的。
1998 29
国内如何安装和使用 Claude Code镜像教程 - Windows 用户篇
国内如何安装和使用 Claude Code镜像教程 - Windows 用户篇
1107 5
【保姆级图文详解】大模型、Spring AI编程调用大模型
【保姆级图文详解】大模型、Spring AI编程调用大模型
776 10
【保姆级图文详解】大模型、Spring AI编程调用大模型
Windows安装Claude Code
Claude Code 是 Anthropic 推出的代码助手,支持在 Windows 通过 WSL(Windows Subsystem for Linux)运行。本文介绍如何在 Windows 系统中启用 WSL、安装 Ubuntu 子系统、配置 Python 与 Node.js 环境,并最终安装和运行 Claude Code。内容涵盖 WSL 设置、开发工具安装、依赖配置及常见问题解决方法,助你顺利在本地环境中使用 Claude Code 提升编码效率。
409 0
Windows安装Claude Code
从混乱到有序:2025年10+拯救多项目管理的专业工具指南
本文全面解析智能组合管理的技术架构与算法创新,涵盖数据感知、优化计算到决策应用的全链条。介绍动态贝叶斯网络优化框架及多项目协同资源调度模型,并结合工具,展示智能工具在研发与项目管理中的前沿应用,助力组织实现高效协同与持续优化。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问