C++源码:

//program 3-3
#include<conio.h>
#include <iostream>
using namespace std;
int Partition(int r[],int low,int high)//划分函数
{int i=low,j=high,pivot=r[low];//基准元素while(i<j){while(i<j&&r[j]>pivot) j--;//向左扫描if(i<j){swap(r[i++],r[j]);//r[i]和r[j]交换后i+1右移一位}while(i<j&&r[i]<=pivot) i++;//向右扫描if(i<j){swap(r[i],r[j--]);//r[i]和r[j]交换 后j-1左移一位}}return i;//返回最终划分完成后基准元素所在的位置
}int Partition2(int r[],int low,int high)//划分函数
{int i=low,j=high,pivot=r[low];//基准元素while(i<j){while(i<j&&r[j]>pivot) j--;//向左扫描while(i<j&&r[i]<=pivot) i++;//向右扫描if(i<j){swap(r[i++],r[j--]);//r[i]和r[j]交换}}if(r[i]>pivot){swap(r[i-1],r[low]);//r[i-1]和r[low]交换return i-1;//返回最终划分完成后基准元素所在的位置}swap(r[i],r[low]);//r[i]和r[low]交换return i;//返回最终划分完成后基准元素所在的位置
}void QuickSort(int R[],int low,int high)//实现快排算法
{int mid;if(low<high){mid=Partition2(R,low,high); //基准位置QuickSort(R,low,mid-1);//左区间递归快排QuickSort(R,mid+1,high);//右区间递归快排}
}
int main()
{int a[100];int i,N;cout<<"请先输入要排序的数据的个数:";cin>>N;cout<<"请输入要排序的数据:";for(i=0;i<N;i++)cin>>a[i];cout<<endl;QuickSort(a,0,N-1);cout<<"排序后的序列为:"<<endl;for(i=0;i<N;i++)cout<<a[i]<<" " ;cout<<endl;getch();return 0;
}

运行结果:

python源码:

n=int(input("请输入要排序的序列的元素个数:n="))
print("请输入这一串序列(每一个元素用换行符隔开):")
a=[]
for i in range(n):a.append(int(input()))
low=0
high=n-1
#将该序列分解为两个子序列
def partition(a,low,high):#返回基准元素位置i=lowj=highpivot = a[low]while i<j:while i<j and a[j]>pivot:#向左扫描,一直找到<=pivot的数,将两者交换,i向后移j-=1if i<j:a[i],a[j]=a[j],a[i]i=i+1while i<j and a[i]<=pivot:#从左向右扫描,一直找到>pivot的数,将两者交换,j向前移i+=1if i<j:a[i],a[j]=a[j],a[i]j -= 1return i
def quicksort(a,low,high):if low<high:mid=partition(a,low,high)quicksort(a,low,mid-1)quicksort(a,mid+1,high)
partition(a,low, high)
quicksort(a,low,high)
print("排序后的序列为:",a)

运行结果:

兵贵神速——快速排序相关推荐

  1. Python(算法综合)问题 D: 兵贵神速-快速排序

    问题 D: 兵贵神速-快速排序 题目描述 未来的战争是科技的战争. 假如 A 国受到 B 国的导弹威胁,那么 A 国就要启用导弹防御系统, 根据卫星.雷达信息快速计算出敌方弹道导弹发射点和落点的信息, ...

  2. 兵贵神速-快速排序-(分治)

    算法实现: (1)分解:先从数据中选择一个基准元素如然后呢将大于该基准元素得数据放在右边将小于该基准元素的数据放在后面. (2)治理:对两个子序列分别进行快速排序. (3)合并:将拍好顺序的连个子序列 ...

  3. Golang TDD实践报告:快速排序Quick Sort

    Golang TDD实践报告:快速排序Quick Sort [阅读时间:约5分钟] 0.项目需求 1.编写符合项目输入输出的一个测试 2.尝试运行测试 3.先使用最少的代码来让失败的测试先跑起来 4. ...

  4. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  5. 数据结构学习(十三)、快速排序

    基本思想:通过一趟排序将待排记录分割成独立两个部分,其中一部分记录的关键字均比另一部分记录的关键字小, 则可分别对这两部分继续进行排序,重复操作以上操作,已达到整个序列有序的目的 void Quick ...

  6. 快速排序(快排)--->注释超详细

    基本思想:         1.先选取一个基准值(一般选取数组第一个元素).         2.以第一步选取的基准值为标准,然后从最后一个数值开始一步步向前走将数字与基准值进行比较,如果该值大于基准 ...

  7. 快速排序的两种实现方法(c语言版本)

    经过调研发现,对任意无序整数数组,快速排序有两种实现方法,这里简单阐述下思路: 思路一:随意选择一个基准元,一般选择数组的起始元或末尾元,Weiss这本书上特意搞了个算法来选择基准元,--,总之就是基 ...

  8. 【经典算法】快速排序

    与归并排序一样,快速排序使用也使用了分治的思想.下面是对一个典型的子数组A[p,...,r]进行快速排序的三步分治过程: 分解:数组A[p,...,r]被划分成两个(可能为空)子数组A[P,...,q ...

  9. 20140725 快速排序时间复杂度 sTL入门

    1.快速排序的时间复杂度(平均时间复杂度为) 数组本身就有序时,效果很差为O(n^2) 2.STl入门 (1) C++内联函数(inline)和C中宏(#define)区别 内联函数有类型检查,宏定义 ...

最新文章

  1. kali学习日记第二篇 -- Nessus
  2. 正则表达式处理的基本步骤
  3. 关于微信小程序的的总结
  4. linux egrep新添的正则表达式元字符
  5. 面试问题 - 只用位操作在ABAP里实现a+b
  6. Win11推送加速!
  7. [算法题] Search in Rotated Sorted Array
  8. Python 下的 lambda 算子
  9. 数据挖掘案例:建立客户流失模型
  10. Windows Server 2012和2016从Evaluation评估版升级到正式版方法(附带产品密钥/key)
  11. 微信公众号的使用方法
  12. Dubbo入门基础与实例讲解(超详细)
  13. php 解析lrc文件格式,前端LRC歌词解析播放插件
  14. web16(ColorBox插件编写)
  15. 【Multisim仿真】差分比例放大电路
  16. ubutun 滑动 触控板_Ubuntu触控板支持多指手势和滑动切换应用
  17. JeeSite(JES)
  18. 谈Java语言规范之枚举类型
  19. 做形态学方法的团队_2020年第十六届国际土壤微形态学会议(ICOSM)
  20. mysql 代替不明_所有的死锁,都是不明就里的循环。又一必须升级MySQL的死锁问题!!!...

热门文章

  1. IOS 第三方库介绍
  2. 学生资助管理系统毕业设计
  3. (学习笔记)An Uncertain future: forecasting from static images using variational autoencoders
  4. 通过自定义协议URL protocal 在网页端打开本地应用程序(兼容各种浏览器)
  5. 三千年前的古文字被AI破译,MIT和谷歌开发失传语言的机器翻译系统
  6. 体验文心一言AI大模型生成推特、谷歌公司、csdn、中国能建、中国兵器、华为云、瑞银集团和贝莱德集团简介
  7. linux将文件夹树状列出,Linux下用tree命令列出树形图
  8. screen命令使用
  9. 答来信 读书和实践哪个更重要
  10. CPU-Z的安装与使用