一百万个整数导致QuickSort崩溃

时间:2019-10-15 13:26:10

标签: c quicksort

我在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

0 个答案:

没有答案