人家都是做项目的时候出现了stackoverflow,我是刷题的时候。。。
下午过排序的时候,用java写快排,洛谷给了RE,我以为是数组越界,搞了半天,结果是虚拟机栈爆了,递归层数太多。
洛谷1177
import java.util.*;
public class Main {
static int maxn=5000005;
static int a[]=new int[maxn];
static Scanner in=new Scanner(System.in);
public static void main(String[] args) {
int n=in.nextInt();
for(int i=1;i<=n;i++) a[i]=in.nextInt();
qsort(a,1,n);
for(int i=1;i<=n-1;i++) System.out.print(a[i]+" ");
System.out.println(a[n]);
}
public static void qsort(int a[],int l, int r){
if(l>=r) return;
int i=l,j=r,temp=a[l];
while(i<j){
while(i<j&&a[j]>=temp) j--;
if(i<j) a[i]=a[j];
while(i<j&&a[i]<=temp) i++;
if(i<j)a [j]=a[i];
}
a[i]=temp;
qsort(a,l,i-1);
qsort(a,i+1,r);
}
}
网友评论