快速排序问题用for循环和if else解决新手入门,求带带

img


怎样实现25行想实现的两边数值的交换?,我不知道哪里出了问题,能请各位看看吗,说是从NUM中读取无效数据和写入缓冲区溢出

#include<stdio.h>
int main(void)
{
    int n,l, r,k, NUM[1000] ,i,t;
    scanf_s("%d%d", &n, &k);
    getchar();
    for (i = 0; i < n; i++)
    {
        scanf_s("%d", &NUM[i]);
        for(l=0;l<n;l++)
        {
            NUM[l] = NUM[i];
            if (NUM[l] >= NUM[k - 1])
            
            break;
        }
        for (r = n; r > -1; r--)
        {
            NUM[r] = NUM[i];
            if (NUM[r] < NUM[k - 1])
            
            break;
        }
        
        t = NUM[l], NUM[l] = NUM[r], NUM[r] = t;
        if (l == r||l==r+1)
        {
            for (i = 0; i < n; i++)
            {
                printf("%d ", NUM[i]);
                
            }
        }
    }
    return 0;

}

把代码贴上来

img