【NC140 排序】手写快速排序
描述
给定一个长度为 n 的数组,请你编写一个函数,返回该数组按升序排序后的结果。
数据范围: 0 \le n \le 1\times10^30≤n≤1×103,数组中每个元素都满足 0 \le val \le 10^90≤val≤109
要求:时间复杂度 O(n^2)O(n2),空间复杂度 O(n)O(n)
进阶:时间复杂度 O(nlogn)O(nlogn),空间复杂度 O(n)O(n)
注:本题数据范围允许绝大部分排序算法,请尝试多种排序算法的实现。
示例1
输入:
[5,2,3,1,4]
返回值:
[1,2,3,4,5]
示例2
输入:
[5,1,6,2,5]
返回值:
[1,2,5,5,6]
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可* 将给定数组排序* @param arr int整型vector 待排序的数组* @return int整型vector*/vector<int> MySort(vector<int>& arr) {// write code hereso(arr, 0, arr.size()-1);return arr;}void so(vector<int>& arr, int L, int R) {if(L>=R) return;int l = L, r = R, tmp, tar = arr[L];while(l<r) {while(l<r && arr[r] >= tar) r--;while(l<r && arr[l] <= tar) l++;swap(arr[l], arr[r]);}swap(arr[L], arr[l]);so(arr, L, l-1);so(arr, l+1, R);}
};
【NC140 排序】手写快速排序相关推荐
- java 快排_八大排序-快速排序(搞定面试之手写快排)
概要 快速排序由C. A. R. Hoare在1960年提出,是八大排序算法中最常用的经典排序算法之一.其广泛应用的主要原因是高效,核心算法思想是分而治之.快速排序经常会被作为面试题进行考察,通常的考 ...
- 【排序算法】— 手写堆排序
原创公众号:bigsai,码字不易,如有帮助,记得三联! 前言 在个人的专栏中,其他排序陆陆续续都已经写了,而堆排序迟迟没有写,在国庆假期的尾声,把堆排序也写一写. 插入类排序-(折半)插入排序.希尔 ...
- 【算法入门】用Python手写五大经典排序算法,看完这篇终于懂了!
算法作为程序员的必修课,是每位程序员必须掌握的基础.作为Python忠实爱好者,本篇将通过Python来手撕5大经典排序算法,结合例图剖析内部实现逻辑,对比每种算法各自的优缺点和应用点.相信我,耐心看 ...
- 用Python手写五大经典排序算法,看完这篇终于懂了!
算法作为程序员的必修课,是每位程序员必须掌握的基础.作为Python忠实爱好者,本篇东哥将通过Python来手撕5大经典排序算法,结合例图剖析内部实现逻辑,对比每种算法各自的优缺点和应用点.相信我,耐 ...
- 扫描线填充算法代码_手写算法并记住它:计数排序
对于经典算法,你是否也遇到这样的情形:学时觉得很清楚,可过阵子就忘了? 本系列文章就尝试解决这个问题. 研读那些排序算法,细品它们的名字,其实都很贴切. 比如计数排序,所谓"计数" ...
- 排序算法之快速排序实现及算法思想
快速排序的思想是基于分治算法. 首先说明:快速排序是不稳定的!! 时间复杂度:O(nlogn) 给定区间[l,r] 算法思想: 第一步:确定分界点 可取q[l].q[r].q[(l+r)/2].随机. ...
- C++打卡20-【排序模板】快速排序
输入nn个整数,用快速排序算法将这nn个数从小到大进行排序.n \leq 1000n≤1000. 请手写函数,切勿使用库函数. 输入格式 第一行,输入整数nn. 第二行,输入这nn个整数 输出格式 一 ...
- 第一篇 数据结构、设计模式与手写代码
目录 1.怎么理解时间复杂度和空间复杂度? 2.数组和链表结构简单对比? 3.怎么遍历一个树 4.冒泡排序(Bubble Sort) 5.快速排序(Quick Sort) 6.二分查找(Binary ...
- 【面试题】常见面试题汇总————手写题
面试中出现的经典题 方法类 数组去重排序 数组去重 数组排序 数组拍平,降维 判断一个数组是不是数组 二级目录 lc编程类 全排列 js实现类 手写promise 手写then 手写instanceo ...
最新文章
- 一文学会基于R的静态和动态网络绘制
- 决策树:从特征的重要程度说起
- 为什么图片要2的倍数_为什么电工作业时,至少要有2个人?电工保命四招要牢记!...
- (转) Java多线程同步与异步
- bilibili源码_Java开源商城源码推荐,从菜鸡到大神,永远绕不开的商城系统
- 题解 P5259【欧稳欧再次学车】
- SqlServerDBHelper类
- 应“云”而生--云时代的运维新理念
- IBM ThinkPad错误代码列表
- 遥感图像的辐射畸变与辐射校正
- 揭秘|Axway API在银行业的应用
- Attention Points
- python 变量使用进阶
- 你刷我,我刷你,霸榜CLUE甜蜜蜜
- 医疗保健数据接口_为什么需要用于医疗保健业务的应用程序
- 我在达内学安卓-基于ArrayAdapter创建单一对象列表方式创建联系人列表!
- 已安装ME,PR队列导出仍无法打开ME
- 微信小程序实例:创建下发模板消息实例
- vue 移动端PC端选用的ui框架
- 什么输入法对计算机英语,电脑输入法不见了,只能打英文怎么处理
热门文章
- ubuntu下修改mysql编码,使能支持中文
- 登录用户Eclipse中SVN访问用户的变更办法
- VS2008 只生成DLL不生成lib文件
- 关于application title一直是untitled的问题
- [Leetcode][程序员面试金典][面试题08.03][JAVA][魔术索引][递归][优化]
- mysql binlog 备份_做好mysql运维,必须熟练掌握备份和恢复,实战一次不行多来几次...
- 树莓派 无法安装mysql_树莓派安装mysql
- cpython cython_python – 优化Cython中的字符串
- mysql pmm 布署_给 mysql 安装 pmm 监控
- rdd分片 spark_Spark分区