首页 > 编程知识 正文

fft算法的基本思路和步骤,快速排序算法java

时间:2023-05-04 19:23:03 阅读:19902 作者:4282

java快速排序的思路与算法

面试的时候Arrays.sort ) )有时我会问,是怎么实现的,我以前不知道是什么,最近下单看了一下。 直接吓傻了,

//看到这个时候还很淡泊,可怕的事情来了。

publicstaticvoidsort(int[]a ) {

dualpivotquicksort.sort(a,0,a.length-1,null,0,0 );

}

进去一看,突然没有了看的欲望。

DualPivotQuicksort//共3079行

请从网上查找分析流程图。 (最好从算法上看流程图。 照片的URL来自http://www.tui cool.com/articles/bfy7NZ ) (谢谢) )

因为我们不能马上写这样的代码,所以首先理解各个算法的实现是最基本的,目标是之后自己集成一个。

这次实现的快速排序算法(DualPivotQuicksort类名的一半是) :

公共类排序{

静态布尔型(intb,intb ) {

returna

}

staticvoidexch(intarray[],inti,intj ) {

inttemp=array[i];

array[i]=array[j];

array[j]=temp;

}

staticvoidcomexch(intarray[],inti,intj ) {

if(less(Array[j],array[i] ) )

Exch (阵列,I,j );

}

//扫描

staticintpartition(inta[],intl,intr ) {

inti=l-1,j=r;

intv=a[r];

for (; () )。

wile(less ) a[I],v );

while(less ) v,a(-j ) ) ) ) ) )

if(j==l ) break;

}

if(I=j ) break;

exch(a,I,j );

}

exch(a,I,r );

returni;

}

//快速排序

staticvoidquicksort(inta[],intl,intr ) {

if(r=L )返回;

inti=partition(a,l,r );

快速排序(a,l,i-1 );

快速排序(a,i 1,r );

}

publicstaticvoidmain (string args [ ] ) {

intarray [ ]={ 1,3,2,5,4,9,8,0 };

快速排序(阵列,0,7 );

集成:阵列(for ) )。

system.out.println(n;

}

}

}

将排序的数组设为A[0]……A[N-1]。 首先,选择任意数据(通常选择数组中的最后一个数字)作为关键数据,将所有小于的数字放在前面,将所有大于的数字放在后面。 这个过程称为快速排序。 值得注意的是,快速排序不是稳定的排序算法。 这意味着多个相同值的相对位置在算法结束时可能会发生变动。

这是最简单的快排,只是班的一半。 如果知道了另一半为什么要按轴分开,就补充算法。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。