C语言:冒泡排序(升序)

请问冒泡排序中的此段代码出现了什么问题?(目前代码执行后的结果与初始值无变化)


#include "stdio.h"
#define SIZE 10
void swap(int a,int b);//prototype


int main(void){
    int array[SIZE] = {106, 33, 65, 96, 18, 44, 65, 72, 123, 21};
    for(int i = 0;i < SIZE;i++){//打印初始数组 
        printf("%6d",array[i]);
    } 
    puts("");
    //冒泡排序 
    for(int i = 0;i < SIZE - 1;i++){
        for(int j = 0;j < SIZE - 1;j++){
            if(array[j] > array[j+1])//若前一个数大于后一个数,则交换此两个数:升序 
                swap(array[j],array[j+1]);
        }
    }
    for(int i = 0;i < SIZE;i++){//打印排序后的数组 
        printf("%6d",array[i]);
    } 
}//end function main


void swap(int a,int b){//交换a,b的值 
    int part;
    part = a;
    a = b;
    b = part;
}
for(int i = 0;i < SIZE - 1;i++){
        for(int j = 0;j < SIZE - 1-i;j++){
            if(array[j] > array[j+1])//若前一个数大于后一个数,则交换此两个数:升序 
                swap(&array[j],&array[j+1]);
        }
}

void swap(int *a,int *b){//交换a,b的值 
    int part;
    part = *a;
    *a = *b;
    *b = part;
}

你交换的是形参的值,不会影响实参
int a=1;
int b=a;
b=2;
a会跟着变2吗?