C++版数据结构快速排序代码,求纠错。该怎么处理

C++版数据结构快速排序代码,求纠错。。。看了好久实在看不出问题来,没有正常输出。。书上是用的模板,还不怎么会

C++版数据结构快速排序代码,求纠错。。。
看了好久实在看不出问题来,没有正常输出。。书上是用的模板,还不怎么会,所以改成下面的样子了,

C/C++ code
#include<iostream>using namespace std ;bool swap(int A[],int i,int j){       int temp = A[i];           A[i] = A[j];           A[j] =temp;}int partition(int A[],int l,int r,int &pivot){    do    {        while (A[l]<pivot) ++l;        while (A[r]<pivot&&(r!=0)) --r;        swap(A,l,r);    }  while(l<r);      swap(A,l,r);      return l;}void qsort(int A[],int i,int j){    if (j<=1) return ;    int pivot = A[(i+j)/2 ] ;    swap(A,pivot,j);    int k = partition(A,i-1,j,A[j]);    swap(A,k,j);    qsort(A,i,k-1);    qsort(A,k+1,j);}int main(){    int A[8]={'\0'};    for (int i=0;i!=8;i++)  cin>> A[i];    qsort(A,0,7);    for(int i=0;i!=8;i++)  cout<<A[i]<<" ";    return 0;}



[解决办法]
C/C++ code
#include<iostream>using namespace std ;bool swap(int A[], int i, int j){    int temp = A[i];    A[i] = A[j];    A[j] = temp;}int partition(int A[], int l, int r, int& pivot){    do    {        while(l<r&&A[l] < pivot) ++l;        while((r > l && A[r] > pivot)) --r; //changed        swap(A,l,r);    }    while(l < r);    return l;}void qsort(int A[], int i, int j){    if(j <= i) return ; //changed    int pivot = A[(i+j)/2 ] ;    swap(A, (i + j) / 2, j); //changed    int k = partition(A, i, j, A[j]);//changed   // swap(A, k, j);    qsort(A, i, k - 1);    qsort(A, k + 1, j);}int main(){    int A[8] = {1, 2, 3, 5, 4, 7, 6, 0};    // for (int i=0;i!=8;i++)  cin>> A[i];    qsort(A, 0, 7);    for(int i = 0; i != 8; i++)  cout << A[i] << " ";    return 0;}