实现一个对整形数组的冒泡排序
#include <stdio.h>
void bubble_sort(int arr[],int sz)
{
int i = 0;
for(i=0; i<sz-1; i++)//i表示趟数
{
int j = 0;
for(j=0; j<sz-i-1; j++)
{
if(arr[j] > arr[j+1])
{
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}
void showArr(int arr[],int len)
{
for(int i=0;i<len;i++)
{
printf("%d",arr);
}
printf("\n");
}
int main()
{
int arr[] = {3,1,7,5,8,9,0,2,4,6};
int sz = sizeof(arr)/sizeof(arr[0]);
show Arr(arr,len);
bubble_sort(arr);
for(i=0; i<sizeof(arr)/sizeof(arr[0]); i++)
show Arr(arr,len);
{
printf("%d ", arr[i]);
}
return 0; }
进行了优化,在冒泡排序中j<sz-i-1;其实还可以进一步优化,如果一趟下来没有交换,则有序了,后面的步骤就不用在进行下去了。