why getting runtime errors

#include<stdlib.h>
#include<stdio.h>
//#include<conio.h>
int quiksort(int,int);
int partition(int,int);
//#include<malloc.h>
int a[1000001];
int main()
{
// int a[1000001];
long int i,t;
scanf("%ld",&t);
// a=(int*)malloc(t*sizeof(int));
for(i=0;i<t;i++)
scanf("%ld",&a[i]);

	quiksort(0,t-1);
      for(i=0;i<t;i++)
	     printf("%ld\n",a[i]);
//getch();
		return 0;
			}
		 
	int quiksort(int i,int j)
	{  int k;
	  if(i>=j)
	  return 0;
	  else
	  {k=partition(i,j);
	    quiksort(i,k);
	    quiksort(k+1,j);
			}
	return 0;
		}	
		
int partition(int l ,int r)
 {    
	int i=l,j=r,p,temp,m,k;
	k=rand();
	m=i+((10*k)%(r-l));
	p=a[m];
	while(i<j)
	{ while(i<j&& (a[i]<p))i++;
      while(i<j && (a[j]>=p))j--;
	   if(i<j)
	   {temp=a[i];
	   a[i]=a[j];
	   a[j]=temp;
	   
			}
	   	 
		}if(a[j]<=p)
		return j;
		else
		return j-1;	
		}