想要进行冒泡排序 为什么要用 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