一些常用的代码,和demo一定要保留,对于一个程序员的成长就是不断 学习,实践,积累,除了少数的天才外, 绝大多数程序员的发展都要经历的几步,这里重点说一下积累,看到一些好的代码活着功能复杂的算法,方法,就把它收到自己的代码库里,至于自己的代码库 其实就是个本地文件夹,级别上应该跟 你自己的代码平级,建议存成.hpp文件,即头文件里包含实现,这样既保留了源码,也可以快速引用。同时这个文件夹最好添加的环境变量中,以便使用的时候直接引用

下面来说说放入代码库的第一个算法程序,快速排序,网上对于这个解释很多,其中有些是大而化之,看了根本不知所谓,学习算法还是重点了解过程,编码终究是个小事儿。

快速排序 的过程其实很简单,

用我自己理解的方式解释就是

首先 以第一个节点为准(key),以某种手段让key交换到自己排序后应该在的位置上,同时保证左边的数都小于这个key,右边的数都大于这个key(如果是从大到小排序则是左边的都大于key右边的都小于key)

如 集合 {3,1,5,2,4} 经过上述处理就回得到结果 {1,2,3,5,4} 也就是说3(key)已经抵达正确为止,同时把比三小的都放到了左边,比三大的都放到了右边

递归key的左边 子集 直至剩下一个元素为止

递归key的右边 子集 直至剩下一个元素为止

以下为代码实现

template <typename T>
void QuickSort(T a[],int low,int high)
{
if(low >= high)return;
if(!a)return;

int first = low;
int last = high;
int key = a[first];

while(last>first)
{
while(last>first&&a[last]>=key)
{
last--;
}
a[first] = a[last];

while(last>first&&a[first]<=key)
{
first++;
}
a[last] = a[first];
}
a[first]=key;
QuickSort(a,low,first-1);
QuickSort(a,first+1,high);
}

转载于:https://www.cnblogs.com/yangyang12138/p/6073106.html

丰富自己的代码库-快速排序相关推荐

  1. C语言程序设计之标准库快速排序qsort函数用法示例

    C语言程序设计之标准库快速排序qsort函数,排序效率高,使用方便,太棒了. qsort函数定义如下: #include <stdlib.h>void qsort(void *base, ...

  2. 微软打造了全球最大的Git代码库

    丹棱君有话说:今年 2 月,微软宣布将用 Git 管理 Windows 源代码.随后,Visual Studio 宣布开发 "Git 虚拟文件系统(GVFS)",并将在终极项目和超 ...

  3. ​MMIT冠军方案 | 用于行为识别的时间交错网络,商汤公开视频理解代码库

    作者 | 商汤 出品 | AI科技大本营(ID:rgznai100) 本文主要介绍三个部分: 一个高效的SOTA视频特征提取网络TIN,发表于AAAI2020 ICCV19 MMIT多标签视频理解竞赛 ...

  4. NLP研究索引神器,3000+代码库,一键查找论文、GitHub库

    视学算法报道 转载自:机器之心 编辑:陈萍 NLP 领域非常实用的索引工具「The NLP Index」. 说到搜索,学术搜索也是一门学问. 擅于运用搜索可以帮助你快速寻找想要的学术资料,起到事半功倍 ...

  5. 从Google代码库找到的好东西

    Google 代码库是一个类似 SourceForge 的开源社区,大量开发者在那里上传自己的代码或素材同他人分享,Google 代码库于 2006 年启动,至今已积累了大量的好东西,本文从 Goog ...

  6. 高翔博士SLAMBOO2十二讲代码库中的三方库没有下载下来 ,需要手动对三方库单独下载的git的命令如下

    高翔博士SLAMBOO2十二讲代码库中的三方库没有下载下来 git clone --recursive https://github.com/gaoxiang12/slambook2.git 需要手动 ...

  7. 【PySlowFast】Facebook开源算法代码库PySlowFast,轻松复现前沿视频理解模型

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 在近些年的视频理解研究中,Facebook AI Research 贡献了许多精彩 ...

  8. 50 多万个项目陷入混乱!只因代码库许可协议不兼容

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 提到开源,不少人都认为是免费+自由,其实并非全然如此. 每个开源工作者的追求不同.有的人只想专心写代码,不约束其他人对代码的使用范围,开 ...

  9. 圆环,扇形控件基本算法一种实现 - 代码库 - CocoaChina_让移动开发更简单

    圆环,扇形控件基本算法一种实现 - 代码库 - CocoaChina_让移动开发更简单 // //  CircleCore.h //  Quartz // //  Created by 仙人掌 on ...

最新文章

  1. #与##在宏定义中的--宏展开
  2. Cocos2d-x3.0 不规则Button
  3. android 多结点进度条,Android使用Kotlin实现多节点进度条
  4. RTC_WaitForSynchro()
  5. 一篇文章教你如何使用python爬虫
  6. Codeforces Round #245 (Div. 1) E. Points and Segments 欧拉回路 + 建模
  7. 解决Hbase输入list,创建表报错,输入status可以,org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: S
  8. Oracle 自带sqldeveloper导入数据到表
  9. 架构专家梁勇:哈啰在分布式消息治理和微服务治理中的实践
  10. js一定要放在body的最底部么?聊聊浏览器的渲染机制
  11. html item 左右滑动,拖动Html元素集合 Drag and Drop any item
  12. LeetCode刷题——62. 不同路径
  13. 闭环计算机控制系统的例子,自动控制的举例_自动控制的例子_开环和闭环自动控制系统举例...
  14. 将PC端固定布局页面改成移动端流体布局。
  15. 阿里云推送ReactNative简单集成
  16. 网站建设--报刊订阅管理系统(java+html)(课程设计)内置部分代码和截图,资源库中有该资源
  17. 逻辑表达式(与、异或)表达式
  18. ESP8266-01s MQTT固件烧录
  19. Pinyin4j使用手册
  20. 【Vuforia】最佳实践:支持作为模型目标(Model Targets)的对象和CAD模型

热门文章

  1. spring整合问题集合1
  2. mysql期末考试选择题
  3. ffmpeg基础使用
  4. 配置Apache Basic和Digest认证
  5. LeetCode刷题记录(2)
  6. 《剑指offer》把数组排成最小的数
  7. 赶快使用Q-Dir软件,使您的文件夹操作更加高效
  8. 【Nutch2.2.1基础教程之2.1】集成Nutch/Hbase/Solr构建搜索引擎之一:安装及运行【单机环境】
  9. python科学计算笔记(十四)pandas数据过滤、清理、转换
  10. 推荐算法三视角:矩阵,图,时间线