冒泡排序 中是否需要进入循环的判断 以及数组的疑问.

想要进行冒泡排序 为什么要用 intarr 而不用intarr[] 在这里设置了value值来判断否需不需要排序 即1 2 3 4 5 6 7 8 9 10时就可以跳出函数 但这里出现了问题 希望指点.

 #include
 void bubble_sort(int *arr,int sz)  
 {  int i=0;  int tmp;
    for(i=0;i-1;i++)
   {  int j=0; int value=1;
       
     for(j=0;j-1-i;j++)
      {
         if(arr[j]>arr[j+1])
         {  int value=0;   
          tmp=arr[j+1];
            arr[j+1]=arr[j];
           arr[j]=tmp;
            value=0;
           }
            //if(value==1){break;}
      }
      if(value==1)
      {break;}
   }
      
 }
 int main(){
  int arr[]={15,9,8,7,6,5,4,3,2,1};
  int sz=sizeof(arr)/sizeof(arr[0]);
   bubble_sort(arr,sz);
  
  
  int a;
   for(a=0;a<10;a++)
  printf("%3d",arr[a]); 
  
  
  
  return 0;
  }
  

 void bubble_sort(int *arr,int sz)  
 {  int i=0,tmp,value = 0;
    for(i=0;i<sz-1;i++)
   { 
        value = 0;
        for(j=0;j<sz-i-1;j++)
        {
            if(arr[j] > arr[j+1])
            {
                value = 1;
                tmp = arr[j];  
                arr[j]=arr[j+1];
                arr[j+1] = value;
            }
        }
        if(value == 0)
            break;
   }

}

函数形参用 int * arr 和 int arr[] 都可以,都是用来接收外面传递进来的变量的地址。
另外,冒泡排序为什么还要判断跳出函数,两个for循环完全结束才能顺利排序,否则中途退出有可能造成排序不完全的,

1、这个代码参数改为intarr[] 没问题
2、注释掉 第10行 int value=0 就行了。它创建了局部变量,对value的修改不会影响循环外的value