Python 快速排序算法【简单易懂,代码直接运行】

给定你一个长度为 n 的整数数列。

请你使用快速排序对这个数列按照从小到大进行排序。

并将排好序的数列按顺序输出。

输入格式
输入共两行,第一行包含整数 n。

第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。

输出格式
输出共一行,包含 n 个整数,表示排好序的数列。

数据范围
1≤n≤100000

输入样例:
5
3 1 2 4 5
输出样例:
1 2 3 4 5
**快速排序实质是一个双指针算法,它分为左指针l和右指针r,和一个中间值x = s[l + r >> 1]。令i = l - 1,j = r + 1;i从前往后进行循环,直到找到一个一个比中间值大的数值,j从后往前循环比较直到找到一个比x小的数值,此时比较i和j的值如果说i < j则满足条件交换q[i],q[j],如果i已经大于j则跳出循环。 **
第一轮排序结束后,进入递归函数,分别对函数的左半部分和右半部分进行递归排序,直到中间值左右两侧都排序成功结束函数

C++代码(注意函数形参设置时数组的设计方式q[N])

#include<iostream>
#include<stdio.h>
using namespace std;const int N = 10010;
int q[N];int quick_sort(int q[],int l,int r)
{if(l > r) return;int i = l - 1;int j = r + 1;int x = q[l + r >> 1];while(i < j){do{i++;}while(q[i] < x);do{j--;}while(q[j] > x);if (i < j) swap(q[i],q[j]);    }quick_sort(q,l,j);quick_sort(q,j + 1,r)
}int main()
{int n,i;cin>>n;for(i = 0;i < n;i++) cin>>q[i];quick_sort(q,0,n - 1);for(i = 0;i < n;i++) cout<<q[i]<<" ";return 0;}

python 代码

def quick_sort(q,l,r):if(l >= r):return 0i = l - 1j = r + 1x = q[l + r >> 1]while i < j:while True:i += 1if(q[i] < x):passelse:breakpasspasswhile True:j -= 1if(q[j] > x):passelse:breakpasspassif i < j:q[i],q[j] = q[j],q[i]passpassquick_sort(q,l,j)quick_sort(q,j + 1,r)if __name__ == '__main__':n = eval(input())q = list(map(int,input().split()))quick_sort(q,0,n - 1)for i in range(0,len(q)):print(q[i],end=' ')

点个

Python 快速排序算法【简单易懂,代码直接运行】相关推荐

  1. 中文Python(1)使用中文Python编程更简单易懂

    中文Python(1)使用中文Python编程更简单易懂 Python是当下最热门的计算机语言之一,支持大数据.爬虫.人工智能等领域:同时,Python使用中文语句进行编程方面有着独特的优势,不仅适合 ...

  2. python常用代码入门-入门十大Python机器学习算法(附代码)

    入门十大Python机器学习算法(附代码) 今天,给大家推荐最常用的10种机器学习算法,它们几乎可以用在所有的数据问题上: 1.线性回归 线性回归通常用于根据连续变量估计实际数值(房价.呼叫次数.总销 ...

  3. c语言写拼图游戏算法,[原创]拼图游戏移动算法,简单易懂

    [原创]拼图游戏移动算法,简单易懂 这是我第一次发表关于算法的贴子, 希望大家支持下 原理:判断用户点击的按扭的X或Y坐标是否与移动按扭相同, 并且移动按扭的X,Y坐标是否与用户点击按扭相邻. 拼图游 ...

  4. 公式太多,读不懂? 一文带你领略KNN近邻算法~简单易懂

    ↑ 点击上方[计算机视觉联盟]关注我们 K近邻算法采用测量不同特征值之间的距离方法进行分类. K-近邻算法工作原理: 存在一个样本数据集合,也称作训练样本集,并且样本集中的每个数据都存在标签,即我们知 ...

  5. python快速排序算法循环_算法:快速排序的Python实现

    一.概述 快速排序(quick sort)是一种分治排序算法.该算法首先 选取 一个划分元素(partition element,有时又称为pivot):接着重排列表将其 划分 为三个部分:left( ...

  6. LQR轨迹跟踪算法Python/Matlab算法实现_代码(2)

    本文根据LQR轨迹跟踪算法Python/Matlab算法实现_LQRmatrix推导(2)使用代码实现,进行仿真: clc clear allKp = 1.0 ; dt =0.1 ;% [s] L = ...

  7. python快速排序算法详细图解_详解python实现快速排序算法

    人来人往,蜚短流长,不求此生匆匆过,但求每日在成长 快速排序严重依赖分区,分区部分完成就代表排序成功了一半 1.详细思路见代码注释部分: def quick_sort(l,low,high): ''' ...

  8. 快速排序算法讲解及代码(详细)

    快速排序算法 一.序言 二.快速排序基本思想 三.具体步骤 四.具体代码 一.序言 快速排序是一种高效且使用广泛的排序算法,在很多语言的标准库中自带的排序都是快速排序.所以我们也有必要了解快排的原理以 ...

  9. 灰狼优化算法--简单易懂附python代码

    ps:本博文为个人理解,如有错误请不吝赐教 本博文部分引用了 https://blog.csdn.net/haha0332/article/details/8880591*0 1.算法原理:简单的讲, ...

最新文章

  1. umi搭建react+antd项目(五)子组件编写
  2. c语言窗口程序 画圆,C语言画圆问题。怎么跳过画图界面直接出来了?
  3. 用lua扩展你的Nginx(写的非常好)
  4. Python实现最简单的神经网络(数字识别)
  5. java程序员目标_Java程序员的目标,你都达到了多少条?
  6. Android:解决Failed to load D:\Android-Studio\sdk\build-tools\xx.xx.xx\lib\dx.jar
  7. blob 按换行 分裂_Blob对象介绍
  8. 剑指offer--两个链表的第一个公共结点
  9. php 高德地图创建标注,高德地图 JS API的覆盖物—编辑矢量图形
  10. 多线程之线程通信条件Condition二
  11. 欧姆龙rxd指令讲解_欧姆龙cp1h常用指令学习(四)串口无协议读写指令TXD,RXD...
  12. Matlab科研绘图颜色补充(特别篇5)—176种美国传统颜色
  13. acer软件保护卡怎么解除_Acer软件保护卡使用说明
  14. 声卡可以利用计算机进行,您决定听到什么!使用软件实现声卡分流
  15. win10隐藏任务栏_你真的了解任务栏吗?win10任务栏居然隐藏了这么多小窍门
  16. android 2个 微信,手机挂2个微信可以吗?安卓手机挂2个微信以上教程
  17. 阿里云盘迎来了第三方客户端小白羊版
  18. 2017安防民用市场现状及特点浅析
  19. 笛卡尔坐标系中八个卦限对应的位置
  20. 用arduino mega2560通过isp给 arduino uno烧录程序

热门文章

  1. Webmin与CSF的安装与配置
  2. JMeter 新手入门教程
  3. 利用JAX-WS开发Web服务
  4. idea 一行js_IntelliJ IDEA使用之JavaScript
  5. ocr 合合平台pdf转doc文档
  6. gmail第三方登录_提醒:第三方Gmail应用可以完全访问您的电子邮件
  7. 决策树及分类模型评价指标(混淆矩阵,LIFT曲线 重要)
  8. php mid函数的用法,继续收藏一些PHP常用函数
  9. Android基于图像语义分割实现人物背景更换
  10. 不会用就是凹凸曼 iOS5操控详细教程