博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速排序
阅读量:6649 次
发布时间:2019-06-25

本文共 1744 字,大约阅读时间需要 5 分钟。

 
                               
快速排序

  什么是快速排序?快速排序其实是一种排序方法。

其他不啰说;

  基本原理:给出一堆无序的数,首先重这堆数值中一第一个数为标杆(其他数也可以不过为了方便编程就选着第一个数为标杆),标杆选出后,将这堆无序数分成两堆,比标杆小的分到一堆,比标杆大的分到另一堆,这样就有两堆数了。接着按照同样的方法为这两堆数进行快速排序。

  写代码时第一步,找出标杆,以标杆为中心将比标杆小的数放到标杆右边,比标杆大的放到左边;在分别进入左右两边进行快排;

  假如 start 为数组起点 end为数组终点 排序函数为sort();k 为标杆在数组中的下标;

  (1)sort(start,end)

  (2)sort(start,k-1)

  (3)sort(k+1,end)

 

 

 

 

 

实例:

给出数组为 3 1 2 6 4 

 

//快速 排序//从一堆数中 那第一个数为标杆 把大于标杆的数放在标杆的左边,//把小于标杆的数放在标杆的右边。将数放好后分别进入左右子段//进行下一轮的快排 直到子段长度为1;#include
using namespace std;const int maxn=10;int number[maxn];int n;void sort(int start,int end){ if(start>=end) return; int i;//从右边移动 int j;//从左边移动 int k;//记录最后一个移动位置的数的位置; int mid;//标杆 i=start;//该段的第一位为标杆 把第一个位空出来 j=end; k=start; mid=number[start]; while(i
i;j--) { if(number[j]<=mid) { number[i]=number[j];//从左边往右找 找到一个比mid小的数 将它搬到右边i的位置 k=j; break; } } for(i;i<=j;i++) { if(number[i]>mid) { number[j]=number[i];//从右边往左边找 找到一个比mid大的数 将它搬到j的位置; k=i; break; } } } number[k]=mid;//把mid移动到最后一个空位; sort(start,k-1);//进入右子段 进行快速排序 sort(k+1,end);//进入左子段 进行快速排序}int main(){ int n; while(scanf("%d",&n),n) { printf("请输入n个数\n"); memset(number,0,sizeof(number)); int i; for(i=1;i<=n;i++) { scanf("%d",&number[i]); }//输入数据 sort(1,n); //进行快排 printf("排序后结果\n"); for(i=1;i<=n;i++) { printf("%d ",number[i]); } printf("\n"); } return 0;}

转载于:https://www.cnblogs.com/2013lzm/p/3379569.html

你可能感兴趣的文章
.NET中的加密算法总结(自定义加密Helper类续)
查看>>
sql 跨服务器数据库查询数据
查看>>
VBA SQLServer 基本操作
查看>>
在HTML语言网页中加载视频的代码
查看>>
POJ 1274 The Perfect Stall(二分图匹配)
查看>>
PHP全局错误处理
查看>>
数的1、2、3次方是否均为回文数
查看>>
kramdown 0.14.0,Ruby 的 Markdown 解析器
查看>>
[原创]ExtAspNet秘密花园(十五) — 表格概述
查看>>
GNU make manual 翻译( 一百四十四)
查看>>
第二十四章 异常和错误处理 1异常
查看>>
Java异常处理机制
查看>>
Linux 内核启动流程(转)
查看>>
reverse()的实现字符串反转和模板reverse的实现
查看>>
Qios.DevSuite 免费的winform控件库
查看>>
200多个js技巧代码(七)
查看>>
Linux Kernel 3.7 RC3/3.6.4/3.4.16/3.0.49
查看>>
ubuntu12.04 双网卡绑定
查看>>
D3D11中的硬件反锯齿 SSAA/MSAA/EQAA/CSAA(1)
查看>>
Android InputStreamReader 解析gbk、gb2312编码的xml文件 编码问题.
查看>>