JAVA快速排序和C语言快速排序的区别(边界问题)

为什么JAVA快排递归中:
quickSort(A,l,i-1);(这个i要减1)
quickSort(A,i+1,r);
而C语言的快排中不需要:
Quick_sort(a,l,i);
Quick_sort(a,i+1,r);

JAVA快排代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class QuickSort {
    public static void quickSort(int []A,int l,int r){
        if (l>=r)
            return;
        int x=A[l],i=l,j=r;
        while (i<j){
            while(i<j&&A[j]>x)
                j--;
            if(i<j){
                A[i]=A[j];
                i++;
            }
            while(i<j&&A[i]<x)
                i++;
            if(i<j)
            {
                A[j]=A[i];
                j--;
            }
            A[i]=x;
            quickSort(A,l,i-1);
            quickSort(A,i+1,r);
        }
    }
    public static void swap(int a,int b){
        int temp=a;
        a=b;
        b=temp;
    }

    public static void main(String[] args) throws IOException {
        BufferedReader bf =new BufferedReader(new InputStreamReader(System.in));
        System.out.println("输入数组长度");
        int n=Integer.parseInt(bf.readLine( ));
        int []A=new int[n];
        for (int i = 0; i < A.length; i++) {
            A[i]=Integer.parseInt(bf.readLine( ));

        }
        quickSort(A,0,A.length-1);
        for (int i = 0; i < A.length; i++) {

            System.out.print(A[i]+" ");
        }
    }
}

C语言快排代码:

#include <stdio.h>
#include <stdlib.h>
void Quick_sort(int a[],int l,int r)
{
    if(l<r)
    {
        int i=l,j=r,x=a[l];
        while(i<j)
     {
        while(i<j&&a[j]>x)
            j--;
        if(i<j)
        {
            a[i]=a[j];
            i++;
        }
        while(i<j&&a[i]<x)
            i++;
        if(i<j)
        {
            a[j]=a[i];
            j--;
        }
     }
     a[i]=x;
     Quick_sort(a,l,i);
     Quick_sort(a,i+1,r);
    }
}
int main()
{
    int a[10]={72,6,57,88,60,42,83,73,48,85};
    Quick_sort(a,0,9);
    int i=0;
    for(i;i<10;i++)
        printf("%d ",a[i]);
    return 0;
}

因为i代表数组的长度(上限),数组的下标是从0开始的,所以要-1.

先把两个代码写一样了吧。
基础的代码所有语言实现都一样,
和java还是c没什么关系
查一下你代码哪里不一样吧。