需要进行二重循环,第一层表示进行几轮比较,第二层每轮比较的次数,需要清楚的是,n个元素需要比较的轮数为n-1,第i轮与第i轮需要比较的次数j有如下关系:i+j=n-1(i从0开始)。
#include <stdio.h>
void bubble_sort(int arr[],int len)
{
int i,j,temp;
for(i=0;i<len-1;i++)
{
for(j=0;j<len-1-i;j++)
{
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
int main()
{
int arr[]={20,23,19,67,34,39};
int len=(int)sizeof(arr)/sizeof(*arr);
bubble_sort(arr,len);
int i;
for(i=0;i<len;i++)
printf("%d\n",arr[i]);
return 0;
}
arr[]为含有6个元素的数组,数组名arr代表元素的首地址,所以sizeof(arr)代表整个数组所占的内存空间,即64Byte=24Byte;而arr表示指向首地址,即表示首地址的内容,所以sizeof(*arr)表示首元素所占内存空间的大小。