关于快速排序的问题,一种方法只是把递归换了位置,却不能实现了

关于快速排序的问题,一种方法只是把递归换了位置,却不能实现了

源代码:(可以运行)


```c++
#include<iostream>
using namespace std;
void quickSort(int a[],int,int);
int main()
{
    int array[]={34,65,12,43,67,5,78,10,3,70},k;
    int len=sizeof(array)/sizeof(int);
    cout<<"The orginal arrayare:"<<endl;
    for(k=0;k<len;k++)
        cout<<array[k]<<",";
    cout<<endl;
    quickSort(array,0,len-1);
    cout<<"The sorted arrayare:"<<endl;
    for(k=0;k<len;k++)
        cout<<array[k]<<",";
    cout<<endl;
    
    return 0;
}
 
void quickSort(int s[], int l, int r)
{
    if (l< r)
    {      
        int i = l, j = r, x = s[l];
        while (i < j)
        {
            while(i < j && s[j]>= x) // 从右向左找第一个小于x的数
                j--; 
            if(i < j)
                s[i++] = s[j];
            while(i < j && s[i]< x) // 从左向右找第一个大于等于x的数
                i++; 
            if(i < j)
                s[j--] = s[i];
        }
        s[i] = x;
        quickSort(s, l, i - 1); // 递归调用
        quickSort(s, i + 1, r);
    }
}



###### 改变后:
1、变量的定义也移到了外面 

2、递归调用放在了外面 
源代码:
#include<iostream>
using namespace std;
void quickSort(int a[],int,int);
int main()
{
    int array[]={34,65,12,43,67,5,78,10,3,70},k;
    int len=sizeof(array)/sizeof(int);
    cout<<"The orginal arrayare:"<<endl;
    for(k=0;k<len;k++)
        cout<<array[k]<<",";
    cout<<endl;
    quickSort(array,0,len-1);
    cout<<"The sorted arrayare:"<<endl;
    for(k=0;k<len;k++)
        cout<<array[k]<<",";
    cout<<endl;
    
    return 0;
}
 
void quickSort(int s[], int l, int r)
{
    int i = l, j = r, x = s[l];//变量的定义也移到了外面 
    if (l< r)
    {      
            while (i < j)
        {
            while(i < j && s[j]>= x) // 从右向左找第一个小于x的数
                j--; 
            if(i < j)
                s[i++] = s[j];
            while(i < j && s[i]< x) // 从左向右找第一个大于等于x的数
                i++; 
            if(i < j)
                s[j--] = s[i];
        }
        s[i] = x;
        
    }
    quickSort(s, l, i - 1); // 递归调用放在了外面 
    quickSort(s, i + 1, r);
}


结果却无法输出

你这不是无限递归吗?没有停止条件啊