C语言算法——快速排序

问题遇到的现象和发生背景

快速排序的算法题

遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include 
#include 
void quicksort(int letf, int right,int* a);
int  n;
int main(void)
{
    int i, j;
    scanf("%d", &n);
    int* a = (int*)malloc(sizeof(int) * n);
    for (i = 1; i <= n; i++)
        scanf("%d", &a[i]);
    quicksort(1, n,a);

    for (i = 1; i <= n; i++)
        printf("%d ", a[i]);
    return 0;
}
void quicksort(int left, int right,int* a)
{
    int i, j, t, temp;
    if (left > right)
        return;
    temp = a[left];
    i = left;
    j = right;
    while (i != j)
    {
        while (a[j] >= temp && i < j)
            j--;
        while (a[i] <= temp && i < j)
            i++;
        if (i < j)
        {
            t = a[i];
            a[i] = a[j];
            a[j] = t;
        }
    }
    a[left] = a[i];
    a[i] = temp;

    quicksort(left, i - 1,a);
    quicksort(i + 1, right,a);
    return;
}

运行结果及详细报错内容

结果显示时间超出,不太明白,有什么好的改法吗?

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 数组索引操作,还是得从 0开始
  • 在你基础上改了一下,参考代码如下:
#include <stdio.h>
#include <malloc.h>
void quicksort(int letf, int right,int* a);

int main(void)
{
    int i, n = 10;
    scanf("%d", &n);
    int a[n];
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);
    quicksort(0, n-1, a);
 
    for (i = 0; i < n; i++)
        printf("%d ", a[i]);
    return 0;
}
void quicksort(int left, int right,int* a)
{
    int i, j, t, temp;
    if (left > right)
        return;
    temp = a[left];
    i = left;
    j = right;
    while (i < j)
    {
        while (a[j] >= temp && i < j)
            j--; // 从右向左找第一个小于temp的数
        if (i < j) {
            a[i++] = a[j]; // 将小于temp的值放在左边
        }
        while (a[i] <= temp && i < j)
            i++; // 从左向右找第一个大于temp的数
        if (i < j) {
            a[j--] = a[i]; // 将大于temp的值放在右边
        }
    }
    
    a[i] = temp;
 
    quicksort(left, i - 1,a);
    quicksort(i + 1, right,a);
    return;
}