【九月打卡】第17天【养成记】嵌入式挑战第17天 学习快速排序
2022/9/23 3:17:17
本文主要是介绍【九月打卡】第17天【养成记】嵌入式挑战第17天 学习快速排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程名称:
物联网/嵌入式工程师
课程章节(阶段二第七周 快速排序 1-7):
快速排序课程链接
老师:
大白老师
课程内容:
学习常用排序中的快速排序
学习笔记:
概念:
- 快速排序: 编程中经常使用到的一种排序方法,主要采用了分治法的想法。
思路:
- 先从数组中选取一个数作为基准数,用key来表示。(通常选取数组的第一个元素)
- 开始分的过程,一般是定义两个变量i和j,分别表示第一个元素和最后一个元素的下标
- 从j开始依次向前走,拿a[j]和key比较, 若是a[j] < key,把a[j]放到a[i]的位置。否则向前走。
- 从i开始向后走,拿a[j]和key比较, 若是a[i] > key, a[i]的值放到a[j]的位置。否则向后走。
- 如此循环
- 我们将比key小的值全部存放到key的左边,将比key的值全部f存储到key的右边
主要代码实现
void quick_sort(int a[],int low,int high) { int i = 0,j = 0; int key = 0; i = low; //保存第一个有效元素的下标 j = high; //保存最后一个有效元素的下标 key = a[low]; while(i < j) { while(i < j && a[j] >= key ) j--; if(i < j) { a[i] = a[j]; } while(i < j && a[i] <= key) i++; if(i < j) { a[j] = a[i]; } } //填充key的值到a[i]的值 a[i] = key; if(j - 1 > low) { quick_sort(a,low,j - 1); } if(i + 1 < high) { quick_sort(a,i + 1,high); } return ; }
打卡:
课程评价
本节主要讲解快速排序,代码确实不容易想,也比较复杂。大白老师说很多朋友对快速排序有畏难情绪,认为快速排序使用到了递归,是一种非常复杂的程序,其实未必如此。只要我们使用好了方法,就可以自己实现快速排序。感谢大白老师。
这篇关于【九月打卡】第17天【养成记】嵌入式挑战第17天 学习快速排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?