描述

给定一个长度为 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 排序】手写快速排序相关推荐

  1. java 快排_八大排序-快速排序(搞定面试之手写快排)

    概要 快速排序由C. A. R. Hoare在1960年提出,是八大排序算法中最常用的经典排序算法之一.其广泛应用的主要原因是高效,核心算法思想是分而治之.快速排序经常会被作为面试题进行考察,通常的考 ...

  2. 【排序算法】— 手写堆排序

    原创公众号:bigsai,码字不易,如有帮助,记得三联! 前言 在个人的专栏中,其他排序陆陆续续都已经写了,而堆排序迟迟没有写,在国庆假期的尾声,把堆排序也写一写. 插入类排序-(折半)插入排序.希尔 ...

  3. 【算法入门】用Python手写五大经典排序算法,看完这篇终于懂了!

    算法作为程序员的必修课,是每位程序员必须掌握的基础.作为Python忠实爱好者,本篇将通过Python来手撕5大经典排序算法,结合例图剖析内部实现逻辑,对比每种算法各自的优缺点和应用点.相信我,耐心看 ...

  4. 用Python手写五大经典排序算法,看完这篇终于懂了!

    算法作为程序员的必修课,是每位程序员必须掌握的基础.作为Python忠实爱好者,本篇东哥将通过Python来手撕5大经典排序算法,结合例图剖析内部实现逻辑,对比每种算法各自的优缺点和应用点.相信我,耐 ...

  5. 扫描线填充算法代码_手写算法并记住它:计数排序

    对于经典算法,你是否也遇到这样的情形:学时觉得很清楚,可过阵子就忘了? 本系列文章就尝试解决这个问题. 研读那些排序算法,细品它们的名字,其实都很贴切. 比如计数排序,所谓"计数" ...

  6. 排序算法之快速排序实现及算法思想

    快速排序的思想是基于分治算法. 首先说明:快速排序是不稳定的!! 时间复杂度:O(nlogn) 给定区间[l,r] 算法思想: 第一步:确定分界点 可取q[l].q[r].q[(l+r)/2].随机. ...

  7. C++打卡20-【排序模板】快速排序

    输入nn个整数,用快速排序算法将这nn个数从小到大进行排序.n \leq 1000n≤1000. 请手写函数,切勿使用库函数. 输入格式 第一行,输入整数nn. 第二行,输入这nn个整数 输出格式 一 ...

  8. 第一篇 数据结构、设计模式与手写代码

    目录 1.怎么理解时间复杂度和空间复杂度? 2.数组和链表结构简单对比? 3.怎么遍历一个树 4.冒泡排序(Bubble Sort) 5.快速排序(Quick Sort) 6.二分查找(Binary ...

  9. 【面试题】常见面试题汇总————手写题

    面试中出现的经典题 方法类 数组去重排序 数组去重 数组排序 数组拍平,降维 判断一个数组是不是数组 二级目录 lc编程类 全排列 js实现类 手写promise 手写then 手写instanceo ...

最新文章

  1. 一文学会基于R的静态和动态网络绘制
  2. 决策树:从特征的重要程度说起
  3. 为什么图片要2的倍数_为什么电工作业时,至少要有2个人?电工保命四招要牢记!...
  4. (转) Java多线程同步与异步
  5. bilibili源码_Java开源商城源码推荐,从菜鸡到大神,永远绕不开的商城系统
  6. 题解 P5259【欧稳欧再次学车】
  7. SqlServerDBHelper类
  8. 应“云”而生--云时代的运维新理念
  9. IBM ThinkPad错误代码列表
  10. 遥感图像的辐射畸变与辐射校正
  11. 揭秘|Axway API在银行业的应用
  12. Attention Points
  13. python 变量使用进阶
  14. 你刷我,我刷你,霸榜CLUE甜蜜蜜
  15. 医疗保健数据接口_为什么需要用于医疗保健业务的应用程序
  16. 我在达内学安卓-基于ArrayAdapter创建单一对象列表方式创建联系人列表!
  17. 已安装ME,PR队列导出仍无法打开ME
  18. 微信小程序实例:创建下发模板消息实例
  19. vue 移动端PC端选用的ui框架
  20. 什么输入法对计算机英语,电脑输入法不见了,只能打英文怎么处理

热门文章

  1. ubuntu下修改mysql编码,使能支持中文
  2. 登录用户Eclipse中SVN访问用户的变更办法
  3. VS2008 只生成DLL不生成lib文件
  4. 关于application title一直是untitled的问题
  5. [Leetcode][程序员面试金典][面试题08.03][JAVA][魔术索引][递归][优化]
  6. mysql binlog 备份_做好mysql运维,必须熟练掌握备份和恢复,实战一次不行多来几次...
  7. 树莓派 无法安装mysql_树莓派安装mysql
  8. cpython cython_python – 优化Cython中的字符串
  9. mysql pmm 布署_给 mysql 安装 pmm 监控
  10. rdd分片 spark_Spark分区