请大家帮我看看这个C语言冒泡排序有什么问题

请各位帮我看一下我的冒泡排序代码有什么问题
为什么跑不出正确结果?

#include <stdio.h>
int main(void){
    int a[6] = {6, 7, 4, 3, 2, 1};

    for( int p=5; p>=0; p--){
        int flag = 0;
        for( int i=0; i<p; i++){
            if(a[i] > a[i+1]){
                int mid = a[i];
                a[i] = a[i+1];
                a[i+i] = mid;
                flag = 1;
            }
            
        }
        if(flag == 0)
            break;
    }
    for( int i=0; i<6; i++){
        printf("%d", a[i]);
    }
}

img

            a[i+i] = mid;低级错误

冒泡不是这么写的

for( int p=0; p<5; p++)
{
        flag = 0;
        for( int i=0; i<5-p; i++){
            if(a[i] > a[i+1]){
                int mid = a[i];
                a[i] = a[i+1];
                a[i+1] = mid;
                flag =1;
            }
        }
        if(flag == 0)
            break;
}