实现一个对整形数组的冒泡排序的理解
void my_bubble(int arr[], int n);//函数声明
void my_bubble(int arr[], int n)
{
int i = 0;
int j = 0;
for (i = 0; i < n - 1; i++) //一共多少轮的排序
{
int iscline = 0; //优化:若是没有进行下一轮的排序,说明上一轮的排序已经是好的。
for (j = 0; j <n-1-i ; j++) //每一轮的排序
{
if (arr[j]<arr[j + 1])//每一轮排序的条件
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
iscline = 1; //若是每一轮冒泡排序了,iscline的值会改变为1
}
}
if (iscline = 0) //若iscline的值没有变,说明本次的没有排序,说明已经有序了。可以跳出循环了。
{
return;
}
}
}
int main()
{
int arr[] = {0,1,2,3,4,5,6,7,8,9};
int sz = sizeof(arr) / sizeof(arr[0]);
my_bubble(arr, sz);
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ",arr[i]);
}
}