java快速排序的两种方法,如何使用java排序

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: