void SX(int arr[] ,int sz)//只适用于有序数组
{
//确定趟数
int i = 0;
for (i = 0; i < sz - 1; i++)
{//这个循环是控制交换的次数如:第五个数和第六个数交换完就算完。
int j = 0;
for (j = 0; j <= sz - 1 - i; j++)
{//把第一个数的值一直好下一个数交换,循环sz-1-i次
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
void SX(int arr[], int sz)//优化后
{
//确定趟数
int i = 0;
for (i = 0; i < sz - 1; i++)
{
int flag = 1;//假设本次排序已经有序,更加优化的步骤,结束后面的循环
int j = 0;
for (j = 0; j < sz-1-i; j++)//如果加等于的话会出现不一样的结果
{//确定交换次数
if(arr[j]>arr[j+1])
{
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
flag = 0;//本次排序还无序
}
}
if (flag == 1)
{
break;
}
}
}
int arr[] = {0,1,2,3,4,5,6,7,8,9};
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
//对arr进行排序,排成升序
SX(arr, sz);//冒泡函数排序
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}