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

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

快速排序

----记得大二上课时候,这个排序折磨了我一阵,可能确实是没有学习的天赋吧,今天来解决它!gogogo!

一、排序思路:

   快速排序(Quicksort)是由冒泡排序改进而得到的,它的基本思想是在待排序的n个元素中任取一个元素,我们通常取第一个元素,把该元素放入恰当位置后,数据序列被此元素划分成两部分,所有关键字比该元素关键字小的元素放置在前一部分,所有比它大的元素放置在后一部分(这不是废话吗?)。之后对产生的两个部分分别重复上述过程,直至每部分只有一个元素或者为空为止。言简意赅,就是用递归吧。

二、步骤再阐述:

1、先从整个数组中取出一个数作为我们的基准。

2、比基准大的通通跑去右边,剩下的小可怜就都丢到左边。

3、递归操作,直至还剩一个元素或为空。

 

三、算法概述:

int partition(int data[],int low,int high)    //一趟划分{    int temp;    temp=data[low];                           //以data[low]为基准     while(low
=temp) high--; //从右向左扫描,找一个小于temp的data[high] data[low]=data[high]; //找到这样的R[high],放入data[low]处 while(low
<=temp) low++; //从左向右扫描,找一个大于temp的data[low] data[high]=data[low]; //找到这样的data[low],放入data[high]处 } data[low]=temp; return low;}void QuickSort(int data[],int low,int high) //对data[low..high]的元素进行递增快速排序{ int i; if (low

 四、我们把main函数写起来,然后把完整的程序运行一下如下:

int main(){        int data[N];    int a[]={
13,8,2,9,34,1,69,24,35,79}; int n = (int)(sizeof(a)/sizeof(*a)); for(int i=0;i

 

结果确实是按照有序排列了,我们还可以考虑输出每一次划分的结果,这里就不一一描述了。

 

转载于:https://www.cnblogs.com/Sandm/p/10554032.html

你可能感兴趣的文章
Jenkins+QTP自动化测试框架
查看>>
《Node.js In Action》笔记之流程控制
查看>>
3518EV200 SDK学习1
查看>>
JavaScript初学者应注意的七个细节
查看>>
1163: 零起点学算法70——Yes,I can!
查看>>
2018-2019-2 网络对抗技术 20165318 Exp1 PC平台逆向破解
查看>>
关于图片或者文件在数据库的存储方式归纳
查看>>
存储过程和SQL语句比较及存储过程在C#中调用方法
查看>>
hihocoder 1014 Trie树
查看>>
ADO.NET笔记——使用DataSet返回数据
查看>>
【机器学习】--关联规则算法从初识到应用
查看>>
MOTO XT702添加开机音乐
查看>>
Python脚本日志系统
查看>>
B0BO TFS 安装指南(转载)
查看>>
gulp常用命令
查看>>
TCP(Socket基础编程)
查看>>
RowSet的使用
查看>>
每日一记--cookie
查看>>
WPF and Silverlight 学习笔记(十二):WPF Panel内容模型、Decorator内容模型及其他...
查看>>
FLUSH TABLES WITH READ LOCK 和 LOCK TABLES比较
查看>>