#include<iostream>
#include<time.h>
usingnamespacestd;
intPARTITION(intA[],intp,intr)
{
intx=A[r];
inti=p;
intj=r;
while(i<j)//当还没相等需要进行的步骤
{
//i前进将不符合的数与主元调换,进而放到合适的位置
while(i<j&&A[i]<=x)//不能加上=因为两端都有=号就可能将相等的数分到两个不懂的集合中
{
i++;
}
if(i<j)//此时A[i]>x
{
intt;
t=A[i];A[i]=A[j];A[j]=t;//实质就是将主元与不符合左边集合的那个数互相交换,这时主元被放在j位置了
j--;
}
//j后退将不符合的数与主元调换,进而放到合适的位置
while(A[j]>=x&&i<j)
{
j--;
}
if(i<j)
{
intt;
t=A[j];A[j]=A[i];A[i]=t; //实质就是将主元与不符合左边集合的那个数互相交换,这时主元被放在i位置了
i++;
}
}
//相等时返回分割线的位置
returni;
}
voidQuickSort(intA[],intp,intr) //快速排序
{
if(p<r)//只要有数就能进行快速排序
{
intq;
q=PARTITION(A,p,r);
QuickSort(A,p,q-1); //前半部分进行快速排序
QuickSort(A,q+1,r); //后半部分进行快速排序
}
}
intmain()
{
intnumber[20]={0};
inti;
srand((unsigned)time(NULL));
for(i=0;i<20;i++)
{
number[i]=rand()%100;
cout<<number[i]<<"";
}
cout<<endl;
QuickSort(number,0,19);
for(i=0;i<20;i++)
{
cout<<number[i]<<"";
}
cout<<endl;
return0;
}
/*
1.从一端选定主元
2.再从另一端开始前进,当遇到不满足的数,就将其与主元交换
3.此时主元已经到了另一边,再从另外一边开始出发,当遇到不满足的数是,在将其与主元交换
4.重复的交替前进与交换,将不满足的数交换到满足条件的集合中并且主元也在越来越趋于分割线
5.重复2,3,直到前进到一样的位置是停止,停止的那个位置就是分割线
*/
<!--EndFragment-->
分享到:
相关推荐
快速排序 快速排序2.java 使用java来实现 快速排序2.java 使用java来实现 快速排序2.java 使用java来实现 快速排序2.java 使用java来实现 快速排序2.java 使用java来实现 快速排序2.java 使用java来实现
快速排序快速排序 快速排序 快速排序 快速排序 快速排序
快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序快速排序...
快速排序,比较高效的排序算法之一。这是一个例子,一个关于快速排序的例子。
2、熟悉快速排序的并行算法 3、实现快速排序的并行算法 3.2 实验环境及软件 单台或联网的多台PC机,Linux操作系统,MPI系统。 3.3实验内容 1、快速排序的基本思想 2、单处理机上快速排序算法 3、快速排序算法的...
快速排序源码 快速排序源码快速排序源码 快速排序源码快速排序源码 快速排序源码快速排序源码 快速排序源码快速排序源码 快速排序源码
C语言实现多种链表快速排序
(2)对随机快速排序和冒泡排序这两种排序方法进行比较,测试其在不同数值大小的情况下算法运行的时间复杂度。 二、 实验要求 快速排序算法的基本思想是:随机选取数组中的一个值,将所要进行排序的数分为左右两个...
(1) 完成5种常用内部排序算法的演示,5种排序算法为:快速排序,直接插入排序,选择排序,堆排序,希尔排序; (2) 待排序元素为整数,排序序列存储在数据文件中,要求排序元素不少于30个; (3) 演示程序开始,...
快速排序的并行实现,提高效率。快速排序算法并行化的一个简单思想是,对每次划分过后所得到的两个序列分别使用两个处理器完成递归排序。
快速排序、归并排序、基数排序等排序算法比较,比较时间性能,采用C++语言实现。。。
完整版模块_超级列表框快速排序2.0.rar 完整版模块_超级列表框快速排序2.0.rar 完整版模块_超级列表框快速排序2.0.rar 完整版模块_超级列表框快速排序2.0.rar 完整版模块_超级列表框快速排序2.0.rar 完整版模块...
冒泡排序和快速排序的时间性能 冒泡排序和快速排序的时间性能 冒泡排序和快速排序的时间性能 冒泡排序和快速排序的时间性能 冒泡排序和快速排序的时间性能
知道快速排序算法的思想,但是一直都没有动手写,今天写了下,发现还不是那么容易
qsort总结.pdf快速排序总结qsort总结.pdf快速排序总结qsort总结.pdf快速排序总结 还有实现代码
idea项目:一个主类选择调用6个排序类,记录了学习排序算法的过程,可以自己更改优化,每一种排序是一个类,有需要可以copy走,可重用性强
2、熟悉快速排序的并行算法 3、实现快速排序的并行算法 3.2 实验环境及软件 单台或联网的多台PC机,Linux操作系统,MPI系统。 3.3实验内容 1、快速排序的基本思想 2、单处理机上快速排序算法 3、快速排序算法的...
用函数实现快速排序,并输出每次分区后排序的结果 Input 第一行:键盘输入待排序关键的个数n 第二行:输入n个待排序关键字,用空格分隔数据 Output 每行输出每趟排序的结果,数据之间用一个空格分隔 Sample Input ...
用c#代码实现快速排序 用c#代码实现快速排序 用c#代码实现快速排序 用c#代码实现快速排序
全面的排序算法实现,包括插入排序、合并排序、堆排序、快速排序。 堆排序:HeapSort 讲解详见http://blog.csdn.net/fly_yr/article/details/8550701 插入排序:InSertion_Sort 讲解详见...