java快速排序的两种方法,如何使用java排序
下面java入门介绍如何在java中实现快速排序。希望这个算法排序能帮到你!
快速排序的时间复杂度是不固定的。如果最坏情况下速度慢(在一个原始的逆向排序序列中选择第一个元素作为基准元素),将达到O(n ^ 2)(并且选择排序效率),但是如果理想情况下时间复杂度为O(nlogn)。
实现快速排序的关键在于先在数组中选择一个数字,接下来把数组中的数字分为两部分,比选择的数字小的数字移动到数组的左边,比选择的数字大的数字移动到数组的右边。这体现了分而治之的思想。
让我们在下面实现这个函数:
int Partition(int data[],int length,int start,int end)
{
if(数据==nullptr 长度=0 开始0 结束=长度)
抛出new std:exception(“无效参数”);
int index=randomn range(start,end);
Swap(data[index],data[end]);
int small=start-1;
for(index=start;索引结束;索引)
{
if(data[index]data[end])
{
小;
如果(小!=索引)
Swap(data[index],data[small]);
}
}
小;
Swap(data[small],data[end]);
回归小;
}
int random range(int min,int max)
{
int random=rand()%(max-min 1)min;
随机返回;
}
int Swap(int *num1,int *num2)
{
int temp=* num1
* num1=num2
* num2=temp
}上面代码中的函数RandomInRange用于在开始和结束之间生成一个随机数,函数Swap用于交换两个数。
让我们使用递归来实现快速排序代码:
void QuickSort(int data[],int length,int start,int end)
{
if(start==end)
返回;
int index=Partition(data,length,start,end);
if(索引开始)
快速排序(数据,长度,开始,索引-1);
if(索引结束)
QuickSort(数据,长度,索引1,结束);
}以上是如何在java中实现快速排序的细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。