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

入门之快速排序

 1 #include <iostream>
 2 /*
 3 入门之快速排序
 4 时间复杂度:O(nlogn)
 5 最坏情况时时间复杂度能达到O(n^2)
 6 借鉴自算法导论
 7 */
 8 #include <algorithm>
 9 using namespace std;
10 int a[5] = {2,4,1,5,3};
11 void quick_sort3(int *a,int l,int r)//枢轴可以是任意一个位置的数
12 {
13     if(l >= r) return;
14     int k = a[r],i = l,j = r;
15     while(i < j){
16         while(i < j && a[i] <= k) ++i;
17         while(i < j && a[j] >= k) --j;
18         if(i != j) swap(a[i],a[j]);
19     }
20     swap(a[i],a[r]);
21     quick_sort3(a,l,i-1);
22     quick_sort3(a,i+1,j);
23 }
24 void quick_sort2(int *a,int l,int r)//枢轴只能是最后一个
25 {
26     if(l >= r) return;
27     int t = a[r],j = l-1;
28     for(int i = l; i <= r; ++i)
29         if(a[i] < t)
30         {
31             ++j;
32             if(i != j)
33                 swap(a[i],a[j]);
34         }
35     swap(a[j+1],a[r]);
36     quick_sort2(a,l,j);
37     quick_sort2(a,j+2,r);
38 }
39 void quick_sort(int *a,int l,int r)//枢轴只能是第一个
40 {
41     if(l >= r) return;
42     int m = a[l],i = l, j = r;
43     while(i < j){
44         while(i < j && a[j] >= m) --j; a[i] = a[j];
45         while(i < j && a[i] <= m) ++i; a[j] = a[i];
46     }
47     a[i] = m;
48     quick_sort(a,l,i-1);
49     quick_sort(a,i+1,r);
50 }
51 int main()
52 {
53     quick_sort2(a,0,4);
54     for(int i = 0; i < 5; ++i)
55         cout << a[i] << " ";
56     cout << endl;
57     return 0;
58 }
Quick_sort.cpp

 

转载于:https://www.cnblogs.com/qq188380780/p/7223759.html

相关文章:

  • 基于.NET CORE微服务框架 -谈谈surging的服务容错降级
  • Vue框架 周期
  • 转 JavaScript 检查(Linting)工具的比较
  • 前端知识学习——html
  • oracle中length、lengthb、substr、substrb用法小结
  • SAS笔记(5) FLAG和计数器
  • 用于检测移动设备(包括平板电脑)的轻量级PHP类
  • 170511、Spring IOC和AOP 原理彻底搞懂
  • CodeChef Forest Gathering —— 二分
  • ReactiveSwift源码解析(九) SignalProducerProtocol延展中的Start、Lift系列方法的代码实现...
  • 在List中删除符合条件的内容
  • 亿级SQL Server运维的最佳实践PPT分享
  • socket简单理解
  • JAVA最佳实践
  • 关于Hibernate中get和load的区别
  • 【译】理解JavaScript:new 关键字
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • C++类的相互关联
  • k个最大的数及变种小结
  • React+TypeScript入门
  • Sequelize 中文文档 v4 - Getting started - 入门
  • WebSocket使用
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 两列自适应布局方案整理
  • 数据可视化之 Sankey 桑基图的实现
  • 微信开放平台全网发布【失败】的几点排查方法
  • 问题之ssh中Host key verification failed的解决
  • 一个项目push到多个远程Git仓库
  • 移动端解决方案学习记录
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • # 飞书APP集成平台-数字化落地
  • $L^p$ 调和函数恒为零
  • (1)(1.13) SiK无线电高级配置(六)
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (2022 CVPR) Unbiased Teacher v2
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET delegate 委托 、 Event 事件
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • :“Failed to access IIS metabase”解决方法
  • @Autowired @Resource @Qualifier的区别
  • @EnableConfigurationProperties注解使用
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [Android实例] 保持屏幕长亮的两种方法 [转]
  • [android学习笔记]学习jni编程
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [Avalon] Avalon中的Conditional Formatting.
  • [C++] 默认构造函数、参数化构造函数、拷贝构造函数、移动构造函数及其使用案例
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
  • [codeforces] 25E Test || hash
  • [codevs 1296] 营业额统计
  • [git] windows系统安装git教程和配置
  • [hdu 1247]Hat’s Words [Trie 图]