快速排序后打印出数组元素

时间:2014-09-23 12:20:41

标签: c++ segmentation-fault quicksort

我在网站上找到了快速排序的实现。这是:

#include <iostream>
#include <algorithm>

int partition (int arr[], int l, int h)
{
    int x = arr[h];
    int i = (l - 1);

    for (int j = l; j <= h- 1; j++)
    {
        if (arr[j] <= x)
        {
            i++;
            std::swap(arr[i], arr[j]);
        }
    }
    std::swap(arr[i + 1], arr[h]);
    return (i + 1);
  }

 /* A[] --> Array to be sorted, l  --> Starting index, h  --> Ending index */
 void quickSort(int A[], int l, int h)
 {
   if (l < h)
    {        
       int p = partition(A, l, h); /* Partitioning index */
       quickSort(A, l, p - 1);  
       quickSort(A, p + 1, h);
    }

  }

int main()
{
  int N;
  int l = 1, h = N-1;
  int i = 0;
  int array[N];
  std::cin >> N;
  for( int j = 0; j<N; j++)
  {
    std::cin >> array[j];
    j++;
  }
  quickSort(array, l, h);
  for( int k = 0; k<N; k++)
   {
     std::cout << array[k];
   }

  return 0;
  }

我在main()的末尾添加了一个位来打印数组。这是正确的方法吗?一旦我添加了该部分,我就开始收到分段错误错误。我该如何解决?

1 个答案:

答案 0 :(得分:1)

您在初始化array之前声明了h并初始化N,请尝试:

std::cin >> N;
int* array = new int[N];
int h = N - 1;