我在C语言中的代码崩溃了100万个数字,我似乎无法运行它? 我需要执行时间才能完成作业。 它可以处理100,000个整数,但是当我将其更改为100万个时,它将不起作用。不在我的机器上的notepad ++上,也没有
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define million 1000000
int PARTITION(int a[], int p,int r)
{
int x,i,j,temp;
x = a[r];
i = p-1;
for(j = p; j<= r-1; j++)
{
if(a[j] <= x ) {
i = i+1;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
temp = a[i+1];
a[i+1] = a[r];
a[r] = temp;
return i+1;
}
void QUICKSORT(int a[],int p,int r)
{
if( p < r ){
int q= PARTITION(a,p,r);
QUICKSORT(a,p,q-1);
QUICKSORT(a,q+1,r);
}
}
void printArray(int arr[], int n)
{
for (int i=0; i < n; i++)
printf("%d ", arr[i]);
}
int main()
{
srand(time(0));
int arr[million];
for (int i=0; i<million; i++) {
arr[i] = rand() % 90+10;
printf("%d ", arr[i]);
}
int i;
int n = sizeof(arr)/sizeof(arr[0]);
clock_t t;
t = clock();
QUICKSORT(arr,0,n-1);
t = clock() - t;
double time_taken = ((double)t)/CLOCKS_PER_SEC; // in seconds
printf("\nQS() took %f seconds to execute \n", time_taken);
printArray(arr,million);
return 0;
}
我在这儿做错了什么?该算法是从教科书中将伪代码转换为C