请问冒泡排序中的此段代码出现了什么问题?(目前代码执行后的结果与初始值无变化)
#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吗?